Supportnet / Forum / Datenbanken
seltsamen Feldinhalt trennen
Frage
Hallo zusammen,
ich habe einen Feldinhalt den ich trennen möchte, um eine Aktualisierungsabfrage auszuführen.
Das Feld siehe wie folgt aus:
[b]80009-258-000002[/b]
Der erste Ziffernblock ist immer fünfstellig, der dritte Ziffernblock ist immer sechsstellig; der mittlere kann ein-, zwei- oder dreistellig sein.
Ich möchte nun die erste „0“ des dritten Ziffernblocks gegen eine „2“ austauschen.
[i]ID3: Rechts([ID];InStr([ID];"-"))[/i] = 000002
soweit OK
[i]ID2: Links([ID];InStr([ID];"-"))[/i] = 80009-
Nur wie erreiche ich den Feldinhalt bis zum zweiten „ – „ ???
Wie gesagt der mittlere Teil kann ein-, zwei- oder dreistellig sein, ich kann somit also keine feste Position angeben.
Diese seltsame Zahlenkombination wird von einer Access-basierenden ERP-Software erstellt und über eine Anfügeabfrage in eine „reine“ Access-DB übernommen, d.h. die Zahl muß ich also so hinnehmen.
Lösungsansätze werden liebend gern entgegengenommen.
Gruß
oliver
Antwort 1 von charlie haas
Hey,
empfehle dir für solch komplexe Fragen www.ms-office-forum.de
Da gibt es ein umfangreiches Archiv zum suchen und jede Menge Access-Guru´s.
MfG
Charlie
empfehle dir für solch komplexe Fragen www.ms-office-forum.de
Da gibt es ein umfangreiches Archiv zum suchen und jede Menge Access-Guru´s.
MfG
Charlie
Antwort 2 von Teddy7
Hallo Oliver !
Es gibt eine Funktion mid.
Beispiel Text = "Hugo"
mid(text,2,3) ergibt "ugo"
also mid(text,Startposition,Länge)
In Deinem Fall könnte das so funktionieren:
XSTART: InStr(1;ID;"-")+ 1
XLEN: InStr(XSTART + 1;ID;"-") - XSTART + 1
ID4: mid(ID;XSTART;XLEN)
oder so ähnlich - probier´s mal aus.
Gruß
Teddy
Es gibt eine Funktion mid.
Beispiel Text = "Hugo"
mid(text,2,3) ergibt "ugo"
also mid(text,Startposition,Länge)
In Deinem Fall könnte das so funktionieren:
XSTART: InStr(1;ID;"-")+ 1
XLEN: InStr(XSTART + 1;ID;"-") - XSTART + 1
ID4: mid(ID;XSTART;XLEN)
oder so ähnlich - probier´s mal aus.
Gruß
Teddy
Antwort 3 von Sir_Hilly
mitte=mid(id,7,(7 + (len(id)-13)))
Gruß
Gruß
Antwort 4 von Sir_Hilly
ups so stimmts:
mitte=mid(id,7,(len(id)-13))
Gruß
mitte=mid(id,7,(len(id)-13))
Gruß
Antwort 5 von struppi
Hallo,
Da die Funktion scheinbar für eine Abfrage gebraucht wird, will ich sie mal gleich richtig hier rein schreiben.
Bei Kommas gibts da wieder Fehler....
gruß struppi
Da die Funktion scheinbar für eine Abfrage gebraucht wird, will ich sie mal gleich richtig hier rein schreiben.
Bei Kommas gibts da wieder Fehler....
neuID: Links([id];Länge([id])-6) & "2" & Rechts([id];5)
gruß struppi
Antwort 6 von Koebi
Bravo struppi
Man sieht schon, Du bist kein "Linker" sondern tendierst schwer nach rechts.:-)
Gruss
Köbi
Man sieht schon, Du bist kein "Linker" sondern tendierst schwer nach rechts.:-)
Gruss
Köbi
Antwort 7 von oliverV
Danke für die rege Anteilnahme.
Danke struppi, mit deiner Variante hat es geklappt, das erspart mit das manuelle Ändern von 1.400 Datensätzen zum Jahreswechsel.
Gruß
oliver
Danke struppi, mit deiner Variante hat es geklappt, das erspart mit das manuelle Ändern von 1.400 Datensätzen zum Jahreswechsel.
Gruß
oliver

