Autor Beitrag
cyberax
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 247

Win XP Pro
Delphi 5 Enterprise
BeitragVerfasst: Mo 28.05.07 11:52 
Hallo,

folgende Anweisung...

ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
 if ZQuery_rechnung_art.RecordCount=0 then exit;
 if messagedlg('Sollen wirklich alle Artikel dieser Rechnung gelöscht werden ?',mtWarning,[mbyes,mbno],0)=mryes then begin
  ZQuery_rechnung_art.first;
  repeat
 {Artikelbestand aktualisieren}
   with form13.Query_artikel do begin
    sql.text:='UPDATE artikel SET lagerbestand = lagerbestand + :wertbestand where barcode = :wertbarcode';
    parambyname('wertbestand').value:=ZQuery_rechnung_art.fieldbyname('menge').Value;
    parambyname('wertbarcode').value:=ZQuery_rechnung_art.fieldbyname('artikelnummer').value;
    execsql;
   end;
   ZQuery_rechnung_art.delete;
  until ZQuery_rechnung_art.findnext=false;
 end;
end;


funktioniert leider nicht. D.h., wenn der Recordcount bei z.B. 2 liegt wird bei Findnext immer ein False geliefert.

Wo liegt mein Fehler ?? Gibt es generell eine bessere Möglichkeit solche Routinen zu beschleunigen?

Gruß cyberax
MarkusB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 68



BeitragVerfasst: Mo 28.05.07 14:18 
Moin Cyberax!

Vorschlag:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
if ZQuery_rechnung_art.RecordCount=0 then exit;  
 if messagedlg('Sollen wirklich alle Artikel dieser Rechnung gelöscht werden ?',mtWarning,[mbyes,mbno],0)=mryes then begin  
  ZQuery_rechnung_art.first;
  repeat  
 {Artikelbestand aktualisieren}  
   with form13.Query_artikel do begin  
    sql.text:='UPDATE artikel SET lagerbestand = lagerbestand + :wertbestand where barcode = :wertbarcode';  
    parambyname('wertbestand').value:=ZQuery_rechnung_art.fieldbyname('menge').Value;  
    parambyname('wertbarcode').value:=ZQuery_rechnung_art.fieldbyname('artikelnummer').value;  
    execsql;  
   end;  
   ZQuery_rechnung_art.delete;  
   ZQuery_rechnung_art.first;              <- Änderung
  until ZQuery_rechnung_art.eof;           <- Änderung
 end;  
end;


Es kann sein, dass das "ZQuery_rechnung_art.first;" nach dem "ZQuery_rechnung_art.delete;" nicht nötig ist. Vorrausetzung: der RecordZeiger wird nach dem Delete automatisch aktualisiert.

Viele Grüße
Markus
cyberax Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 247

Win XP Pro
Delphi 5 Enterprise
BeitragVerfasst: Mi 30.05.07 17:14 
Hi markus,

sorry, dass ich jetzt erst antworte. :oops:
So funktionierts! Vielen Dank!