Dein
SQL-wird mit jedem Durchlauf immer größer, weil du immer wieder eine Zeile hinzufügst. Aber du machst nichts mit der Zeile. Dann verwendest du ein Update-Statement, also einen
SQL-Befehl, der keine Ergebnismenge liefert. Ein solches Statement kann nicht mit Open ausgeführt werden, hierzu gibt es die Methode ExecSQL.
Versuch es mal wie folgt:
Delphi-Quellcode:
// ZQuery.Open; // Absolut unnötig
ZQueryTmp.Open;
while not ZQueryTmp.Eof
do
begin
if ZQuery.Locate('
No', ZQueryTmp.FieldValues['
ID'] , [])
then
begin
ZQuery.SQL.Text('
Update tbl_MyData set No= '+ ZQueryTmp.fieldByName('
ID').AsString)+'
where No = '+
ZQueryTmp.fieldByName('
ID').AsString);
// SQL-Statement wird immer wieder überchrieben!
ZQuery.ExecSQL;
// Das Update-Statement ausführen!
end;
ZQueryTmp.Next;
end;
[edit]
Man sollte erst richtig lesen, dann schreiben: Das oben ist Murks, weil du mit ZQuery suchst, es sollte wie folgt funktionieren:
Delphi-Quellcode:
ZQuery.Open;
ZQueryTmp.Open;
while not ZQueryTmp.Eof do
begin
if ZQuery.Locate('No', ZQueryTmp.FieldValues['ID'] , []) then
begin
ZQuery.Edit;
ZQuery.FindField('No').AsString := ZQueryTmp.fieldByName('ID').AsString;
ZQuery.Post;
end;
ZQueryTmp.Next;
end;
[/edit]
Grüße
Mikhal