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
Hallo,
wozu das berechnete Feld Trimmen ?
Das sollte reichen:
Aktualisieren: Glätten([MeineFunktion])
Moin,
wobei das trimmen in die Funktion eingebaut werden könnte und dann in der Abfrage obsolet wäre ...
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
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.
Hallo,
Zitat"Ergebnis" noch in eine andere Spalte übergeben möchte
warum 2 Spalten mit dem gleichen Inhalt ?
Habs geschnallt :)
Funktioniert super wie MzKlMu es geschrieben hat!!
Vielen lieben Dank!
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
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.
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
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.
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
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.
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
Hallo,
es wurde doch alles beschrieben..
Feld: FeldA
Aktualisieren:Glätten( LastSlash([Feld11]) )
Hallo Franz,
vielen Dank!! Ja das war es :) na ich hab die Klammern nicht mehr hinbekommen ... Aber bin ich froh das Du mir geholfen hast!
Auch natürlich an Klaus und Maggie ein großes Dankeschön .. jetzt hab ich einiges wieder dazugelernt!
Lg
Hi an alle,
wollte bezüglich diesen thread gerne noch eine Frage stellen.
Wenn ich nun diese Aktualisierungsabfrage gerne per VBA lösen würde könnte mir jemand hier einen Tip geben bitte?
Unten der Code den ich probiert habe aber leider bekomme ich es so nicht hin... Hab natürlich schon einige Dinge probiert keine Fehlermeldung aber funktionieren tut er leider auch nicht.
Sub AT()
Dim rcsKonto As Recordset
Dim db As Database
Set db = CurrentDb
Set rcsKonto = db.OpenRecordset("SELECT * FROM tbl_Eingabe WHERE Feld11 Like 'AT*'", dbOpenDynaset)
Do Until rcsKonto.EOF
rcsKonto.Edit
rcsKonto.Fields("Umsatztext").Value = Trim(LastSlash("Feld11"))
rcsKonto.Update
rcsKonto.MoveNext
Loop
End Sub
Der SQL Code um es mit einer Aktualisierungsabfrage zu erledigen das funktioniert schon!
UPDATE tbl_Eingabe SET tbl_Eingabe.Umsatztext = Trim(LastSlash([Feld11]))
WHERE (((tbl_Eingabe.Feld11) Like "AT*"));
würde mich freuen wenn mir hier jemand erklären könnte wie man das in VBA erledigen könnte.
Vielen Dank!
LG
Albert
Hi,
möglicherweise klappt es hiermit:
rcsKonto.Fields("Umsatztext").Value = Trim(LastSlash(rcsKonto.Fields("Feld11")))
Hi Maggie!
Ja so klappt es!!
Du weist ja auch alle Antworten was ;)
Vielen Dank! :)
LG
Albert