Ich habe bisher noch nicht mit ADS Datenbanken gearbeitet, aber hier 2 Ansätze die
imho laufen sollten:
1.
Delphi-Quellcode:
var
id : integer;
s : string;
Q: TAdsQuery;
begin
Q:=TAdsQuery.create(self);
try
Q.connection:=<DeineAdsConnection>;
Q.SQL.Text:='UPDATE <Tabelle> SET [tsuche] = :matchcode WHERE ID = :DatensatzID');
Q.Prepared := true; // << weiss nicht, ob das bei ADS nötig ist ....
ADSTable1.DisableControls;
try
While not ADSTable1.eof do
begin
s := ADSTable1.FieldByName('<Das Quellfeld>').asstring;
id := ADSTable1.FieldByName('ID').asstring;
s := Stringreplace(s,'/','',[rfReplaceAll]);
s := Stringreplace(s,'-','',[rfReplaceAll]);
s := Stringreplace(s,' ','',[rfReplaceAll]);
Q.Parameters.ParamByName('DatensatzID').value :=id;
Q.Parameters.ParamByName('matchcode').value :=s;
Q.ExecSQL;
AdsTable1.next;
end;
finally
ADSTable1.EnableControls;
end;
finally
FreeAndNIL(Q);
end;
end;
2.
Veruche mal einfach in deinem Code
Delphi-Quellcode:
for i:=1 to ADSTable1.RecordCount-1 do
begin
...
end;
durch
Delphi-Quellcode:
ADSTable1.first;
While not ADSTable1.eof do
begin
...
ADSTable1.next;
end;
zu ersetzen ...
Mit deiner FOR TO Schleife bewegst du den Datensatzzeiger nicht.
Zumindest must du da noch ein Recno:=i mit einbauen damit das funktioniert.
Schöne Grüße,
Jens