Eine Frage: Tritt dies Problem wirklich nur bei den IDs mit Backslash am Ende auf oder immer?. Diese Art von IDs sind wirklich sehr gewöhnungsbedürftig, von wegen der diversen Sonderzeichen "-", ">", "%" Gerade das "%" wird ja z.B. in SQL als Platzhalter für beliebige viele (auch null) verschiedene Zeichen benutzt. Wenn es z.B. das "%" ist, und das denke ich, dann hast Du sowieso ein Problem.
Es wäre nämlich folgendes dann ebenfalls selektiert:
ID selektiert
E02120012R->%Gh\ ja
E02120012R->Gh\ ja
E02120012R->asdfsdfGh\ ja
...
/Edit: Vielleicht - ich weiß ja nicht, inwieweit Du da Möglichkeiten hast, könntest Du die Datentabelle um ein Zählerfeld erweitern und eine zweite Tabelle anlegen, in der Du die AutoIDs mit Zählern verknüpfst:
dsAccount
Feld ACCOUNTID mit ID erweitern
dsIDTable
Felkd ACCOUNTID, ID
dann steht in dsIDTable:
ACCOUNTID ID
E02120012R->%Gh\ 1
E02120012R->%Gr\ 2
E02120012R->%Zh\ 3
E02120542R->%Gh\ 4
...
und in dsAccount: (aus der Tabelle dsIDTabelle geholt)
ACCOUNTID ID Feldx Feldy Feldz
E02120012R->%Gh\ 1 ...
E02120012R->%Gr\ 2 ...
E02120012R->%Zh\ 3 ...
E02120542R->%Gh\ 4 ...
...
Du musst dann 1. die Tabelle dsIDTabelle mit den AccountIDs füllen und entsprechend IDs generieren, oder diese als Autowert von der Anwendung generieren lassen
und dann in einem 2. Schritt die IDs in die Tabelle AccountID überführen. Dann ist Dein UpdateSQL einfacher und sicherer:
Delphi-Quelltext
1: 2: 3:
| ID:= dsAccount.FieldByName('ID').AsInteger; ... sqlUpdate:= sqlUpdate + ' where ID = :ID'; |
Aber - wie gesagt, das hängt davon ab, ob Du die Tabelle dsAccount erweitern kannst, oder nicht.
Toleranz ist eine Grundvoraussetzung für das Leben.