Einzelnen Beitrag anzeigen

Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: wird durch Query.SQL.Add() die Datenmenge geschlossen?

  Alt 8. Apr 2005, 16:34
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
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat