Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Uwe_Noob am April 16, 2020, 10:56:27

Titel: Fehlender Operator
Beitrag von: Uwe_Noob am April 16, 2020, 10:56:27
Hallo,

ich möchte verhindern das Zeichen in mitten eines Wortes verändert werden.
Die Zeichen sollen nur am Ende ersetzt werden.
Dafür habe ich mir folgendes ausgedacht ...
"UPDATE tabverben SET tabverben.YO = substr(tabverben.Yo, 1, length(tabverben.yo)-2)Replace([tabverben].[yo],'ar','o') WHERE substr(tabverben.YO,-2) = 'AR' and check_konj = 0;"
Allerdings bekomme ich die FM fehlender Operator.
Wo habe ich was vergessen ??
Gruß
Uwe
Titel: Re: Fehlender Operator
Beitrag von: PhilS am April 16, 2020, 11:02:34
Zitat von: Uwe_Noob am April 16, 2020, 10:56:27
"UPDATE tabverben SET tabverben.YO = substr(tabverben.Yo, 1, length(tabverben.yo)-2)Replace([tabverben].[yo],'ar','o') WHERE substr(tabverben.YO,-2) = 'AR' and check_konj = 0;"
substr und length sind keine eingebauten Funktionen in Access/JET/VBA. -> Mid + Len
Davon abgesehen, fehlt zwischen den beiden Funktionsaufrufen von substr und Replace tatsächlich ein Operator. - Mir ist aber der Sinn der ganzen Aktion auch mit deiner Beschreibung nicht wirklich klar.
Titel: Re: Fehlender Operator
Beitrag von: Uwe_Noob am April 16, 2020, 11:25:39
Ok, dann versuch ich das mal zuerklären.

Ich habe ein z. B. Wort "embarcar" im Feld YO.
Das Wort muss aber zu "embarco" umgewandelt werden.
Mein bisheriges Statement war wie folgt.
db.Execute "UPDATE tabverben SET tabverben.YO = Replace([tabverben].[yo],'ar','o') WHERE (((tabverben.YO) Like '*ar'))and check_konj = 0;"
Das hat aber zur folge, dass aus "embarcar" ein "emboco" wird, was doof ist.
Um das abfangen zukönnen, wollte ich das so lösen wie beschrieben.
Wenn es eine bessere / einfachere Lösung gibt, immer her damit :-)
Ich hoffe das erklärt mein Vorhaben besser.

Das ganze sieht zur Zeit so aus.
Dim vrsar As DAO.Recordset
Set vrsar = CurrentDb.OpenRecordset("Select * from tabverben where right(tabverben.verb,2)='ar' and check_konj = 0", dbOpenDynaset)
Debug.Print vrsar!Verb
'With vrsar
'.Edit
    '.Fields("YO") = Replace((Right(vrsar!yo, 2) = "ar"), "ar", "o")
    '.Fields("Tu") = Replace(vrsar!tu, "ar", "as")
    '.Fields("usted") = Replace(vrsar!usted, "ar", "a")
    '.Fields("nos") = Replace(vrsar!nos, "ar", "amos")
    '.Fields("vos") = Replace(vrsar!vos, "ar", "áis")
    '.Fields("ellas") = Replace(vrsar!vos, "ar", "an")
   
'db.Execute "UPDATE tabverben SET tabverben.YO = Replace([tabverben].[yo],'ar','o') WHERE (((tabverben.YO) Like '*ar'))and check_konj = 0;"
db.Execute "UPDATE tabverben SET tabverben.YO = substr(tabverben.Yo, 1, length(tabverben.yo)-2)Replace([tabverben].[yo],'ar','o') WHERE substr(tabverben.YO,-2) = 'AR' and check_konj = 0;"
db.Execute "UPDATE tabverben SET tabverben.tu = Replace([tabverben].[tu],'ar','as') WHERE (((tabverben.tu) Like '*ar'))and check_konj = 0;"
db.Execute "UPDATE tabverben SET tabverben.usted = Replace([tabverben].[usted],'ar','a') WHERE (((tabverben.usted) Like '*ar'))and check_konj = 0;"
db.Execute "UPDATE tabverben SET tabverben.nos = Replace([tabverben].[nos],'ar','amos') WHERE (((tabverben.nos) Like '*ar'))and check_konj = 0;"
db.Execute "UPDATE tabverben SET tabverben.vos = Replace([tabverben].[vos],'ar','áis') WHERE (((tabverben.vos) Like '*ar'))and check_konj = 0;"
db.Execute "UPDATE tabverben SET tabverben.ellas = Replace([tabverben].[ellas],'ar','an') WHERE (((tabverben.ellas) Like '*ar'))and check_konj = 0;"
        '.Update
       ' Debug.Print vrsar!yo
       ' .Close
'End With

End Sub


Gruß
Uwe