Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Aktualisierungsabfrage mit Ausdruckfeld als Kriterium

Begonnen von silentwolf, September 16, 2015, 09:34:39

⏪ vorheriges - nächstes ⏩

silentwolf

Hi,
habe eine Abfrage erstellt in der ich verschiedene Ausdrücke benötige. Nun würde ich aber ein "Ausdrucksfeld" in Aktualiserungsfeld einfügen.. leider steht nach der Aktualisierung dann Trimmen anstatt der Wert der im Ausdruck steht.
Also ein Trimmen:Glätten([MeineFunktion])
Aktualisieren:[Trimmen]
geht leider nicht .. wie muss ich denn das abändern oder kann man das nicht so machen?
Könnte mir jemand hier bitte helfen?

Lg
Albert

MzKlMu

Hallo,
wozu das berechnete Feld Trimmen ?
Das sollte reichen:
Aktualisieren: Glätten([MeineFunktion])
Gruß Klaus

el_gomero

Moin,

wobei das trimmen in die Funktion eingebaut werden könnte und dann in der Abfrage obsolet wäre ...
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

silentwolf

Hallo,
also kurz zur Info... Ich benutze eine custom function für die Bearbeitung von meinen Daten... die gibt mir den string nach dem letzten Slash zurück... da diese nicht immer nach dem slash sind sondern auch ab und zu noch eine leerzeile nach dem slash muss ich oder trimme ich dann noch das Ergebnis in einer weitern Spalte als eine weiteren Ausdruck.
Nun würde ich gern den Ausdruck den ich Trimmen genannt habe in einem anderen Feld einfügen mit einer Aktualisierungsabfrage.
Es geht wahrscheinlich alles in einem Rutsch per vba aber soweit bin ich mit meinen Kenntnissen leider noch nicht.. Deshalb die etwas Umständlichere Weise.

Lg

silentwolf

Danke an Euch beiden!!
Ja das probiere ich gleich aber trotzdem ist noch das andere Problem das ich das "Ergebnis" noch in eine andere Spalte übergeben möchte.


MzKlMu

Hallo,
Zitat"Ergebnis" noch in eine andere Spalte übergeben möchte
warum 2 Spalten mit dem gleichen Inhalt ?
Gruß Klaus

silentwolf

Habs geschnallt :)
Funktioniert super wie MzKlMu es geschrieben hat!!

Vielen lieben Dank!


silentwolf

Hi,
ich nochmal kurz zu diesen Thema..
Jetzt bekomme ich noch eine Sache nicht hin ich werd noch verrückt!
ZitatAktualisieren: Glätten([MeineFunktion])
Das ist ja gut so kein Problem
Ich möchte aber auch das dazugehörige Feld gleich mit ansprechen also in Richtung
Aktualisieren:Glätten([MeineFunktion])[MeinFeldInAbfrage]
ich hab schon alles herumprobiert aber ich bekomme es einfach nicht hin :(
Könnte sich hier bitte nochmal jemand um mich kümmern  ::)

LG

MaggieMay

Hi,
ZitatIch möchte aber auch das dazugehörige Feld gleich mit ansprechen
zu welchem Zweck, was hast du vor?
Zeig doch bitte mal den SQL-Code dazu, vielleicht wird es dann verständlicher.
Freundliche Grüße
MaggieMay

silentwolf

Hallo Maggie,
kann ich leider nicht gut schicken wenn ich nicht weis wie ich das Feld in die Abfrage bekomme :(
Zitatzu welchem Zweck, was hast du vor?
Es geht hier um eine CSV datei. Die möchte oder soll ich aufbereiten.
Hier sind verschiedene Spalten zirka 20 diese Spalten sind leider nicht immer mit gleichen Inhalt. Besser nicht mit der selben struktur z.B. Feld14
das hat Mandatsnummern:00012141211 und dann wieder Ref:12102421 dann wieder 0000/12122/1211/Meier
also quer durch. Nun möchte ich einfach alle gleichen Daten in eine Spalte bekommen.
Beispiel: Durch eine Abfrage filtere ich gewisse Daten.
Spalte1 = Umsatztext dort stehen oder sollten dann alle Firmen stehen die ich bezahlt habe oder von denen ich bezahlt wurde.
Im Moment macht es das aber nicht da z.B. Kunde Meier in Spalte3 steht aber mit Ref12125/12452/Meier
darum meine function LastSlash sie gibt mir den Namen Meier :) aber der nutzt mir nichts in einem Ausdruck denn er soll ja in die Spalte1
Deshalb wollte ich eine Aktualisierungsabfrage so gestallten Filtere eine Spalte was ich halt benötige und aktualisere Spalte A mit den Werten aus z.B. Spalte3 nachdem du mir nur den string nach dem letzten Slash zurückgegeben hast.
Und zusätzlich sind ja nicht alle Daten 1111/111/Meier sondern 1111/111/ Meier also mit leerzeichen. Deshalt Glätten;LastSlash;Feld3 zum Beispiel.
Aber wie Klaus mir schon gezeigt hat geht es ja mit Aktulisieren:Glätten([MeineFunktion])
aber ich möchte halt das feld dazu haben das ich benötige. Aktulisieren:Glätten([MeineFunktion]) "Spalte3" nur das bekomme ich so nicht hin.

LG



MaggieMay

#10
So weit hättest du jetzt nicht ausholen müssen, es geht einzig und allein um die Abfrage.
Kann es sein, dass du den Wert der Spalte an die Funktion übergeben willst?

Der SQL-Code dazu sähe in etwa so aus:
Update tabelle Set spalte1 = meineFunktion(spalte3)

PS:
Die Funktion muss natürlich für die Parameterübergabe auch noch angepasst werden.
Freundliche Grüße
MaggieMay

silentwolf

Vielen Dank für die SQL aber soweit bin ich noch nicht! Einfach in einer Aktualisierungsabfrage das ist alles.
Zitat
Kann es sein, dass du den Wert der Spalte an die Funktion übergeben willst?
JA das möchte ich sehr sehr gerne !
Das hab ich aber doch wohl einige male schon beschrieben oder nicht?
Wie bekomme ich denn diese Spalte in meine funktion?
Nochmal in einer Aktualisierungsabfrage
das Feld Aktualisieren:Glätten([MeineFunktion])
Das kann ich aber ich möchte dort mein Feld hinzufügen.. Also vieleicht so etwas wie Aktualisieren:Glätten([MeineFunktion])([MeinFeldXY]) aber so geht es nicht wie muss ich denn das Feld dazugeben wie sollen die Klammern stehen damit es funktioniert?
Aktualisieren:Glätten([MeineFunktion.MeinFeld]) oder Glätten([MeineFunktion![MeinFeld]) oder Glätten([MeineFunktion)[MeinFeld])) >>>>ICH WEIS ES NICHT!!<<<<

Ich hab schon einiges probiert aber ich bekomme es nicht hin werd noch verrückt das kann doch nicht so schwierig sein.. hab schon gegoogelt wie blöd .. alles finde ich aber nicht diese und ich dreh mich im Kreis. Einmal erkennt er meine Funktion nicht einmal ist ein Punkt falsch einmal fehlt er oder was weis ich was..
Auf alle Fälle funktioniert es nicht!

Wäre wirklich sehr nett wenn mir jemand das sagen könnte Bitte

Lg

MzKlMu

Hallo,
ich habe das jetzt alles mehrmals gelesen, aber ich verstehe immer noch nicht, was Du eigentlich willst. Wie man den Wert einer Spalte an eine Funktion übergibt steht in #10 von MaggieMay. Die Funktion muss aber zur Parameterübergabe vorgesehen sein.

Am einfachsten wäre es mit einer kleinen Beispieldb mit genau diesem Problem. Als MDB bitte.
Oder zeige mal den Code der Funktion.
Gruß Klaus

silentwolf

Hallo Klaus hallo Maggie,
ich glaube meine Frage ist einfacher als Ihr denkt... meine das NICHT Böse!!!
Es geht mir nur um was ich in der Aktualisierungsabfrage schreiben muss.
Im Anhang die Aktualiserungsabfrage nun würde ich einfach gerne wissen was in dem gelb markierten Bereich stehen muss damit ich
Glätten([MeineFunktion.....und das dazugehörige Feld einbinden kann?])
Hier der Code für meine Funktion
Function LastSlash(strText As Variant) As Variant
    Dim intPos As Integer
   
    If IsNull(strText) Then
        LastSlash = Null
    Else
        intPos = InStrRev(strText, "/")
        If intPos = 0 Or intPos = Len(strText) Then
            LastSlash = Null
        Else
            LastSlash = Mid(strText, intPos + 1)
        End If
    End If
End Function

Hier noch ein Code den ich zum Aktualisieren von Daten habe...
Sub SEPAGutschrift()
    Dim rcsKonto As Recordset
   
    Dim db As Database
    Set db = CurrentDb
   
    Set rcsKonto = db.OpenRecordset("SELECT * FROM tbl_CSV WHERE Buchungstext='SEPA-Gutschrift'", dbOpenDynaset)
    Do Until rcsKonto.EOF
   
    rcsKonto.Edit
    rcsKonto.Fields("Buchungstext").Value = "Gutschrift"
    rcsKonto.Update
   
        rcsKonto.MoveNext
    Loop
   
End Sub

Wenn ich natürlich es per VBA updaten könnte wäre das auch ok. Nur bekomme ich es leider noch nicht hin.
Hier der aktuelle SQL Code der momentan
SELECT tbl_CSV.Umsatztext, tbl_CSV.Feld11, LastSlash([Feld11]) AS Slash, Trim([Slash]) AS Trimmen
FROM tbl_CSV;

Ich muss oder sollte mehrere Spalten in meiner tabelle aktualisieren darum wäre es ja nicht schlecht wenn ich einen VBA code dazu hätte und diesen nach bedarf ändern kann.
Aber es geht auch mit einer aktualisierungsabfrage dort würde ich halt die Felderer in meine Funktion zusammen mit Glätten gern verwenden.

Hoffe es ist so verständlicher?

LG
Albert

DF6GL

Hallo,

es wurde doch alles beschrieben..

Feld:    FeldA 
Aktualisieren:Glätten(  LastSlash([Feld11])    )
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access