Günter Kieninger
2012-07-13 07:32:20 UTC
Hallo!
Bis jetzt bin ich dem Irrglauben aufgesessen daß ein Delete automatisch
den nächsten Datensatz selektiert und auch richtig reagiert wenn man
auf dem letzten Datensatz steht.
Nur steht in der Hilfe eindeutig
Datensatz in der Datenmenge gelöscht wurde, wird der vorherige zum >
aktiven Datensatz.
Okay. Nur wie macht man dann am schönsten und richtig eine Schleife wie
folgt (mein jetziger, falscher, Ansatz:
Table1.First;
while not Table1.Eof do begin
if Table1.FieldByName('m').asString = '' then begin
Table1.Delete;
end
else begin
VerarbeiteDatensatz(Table1);
Table1.Next;
end;
end;
Wenn nun der letzte Datensatz gelöscht wird, dann wird der vorletzte
zweimal verarbeitet, weil der ja aktiviert wird.
Wie macht man das nun richtig, ohne viel Verrenkungen?
Gruß aus den Bergen
Günter
Bis jetzt bin ich dem Irrglauben aufgesessen daß ein Delete automatisch
den nächsten Datensatz selektiert und auch richtig reagiert wenn man
auf dem letzten Datensatz steht.
Nur steht in der Hilfe eindeutig
Die Datenmenge wird neu synchronisiert. Dadurch wird der nächste >
Datensatz aktiviert, der nicht gelöscht wurde. Wenn der letzte >Datensatz in der Datenmenge gelöscht wurde, wird der vorherige zum >
aktiven Datensatz.
Okay. Nur wie macht man dann am schönsten und richtig eine Schleife wie
folgt (mein jetziger, falscher, Ansatz:
Table1.First;
while not Table1.Eof do begin
if Table1.FieldByName('m').asString = '' then begin
Table1.Delete;
end
else begin
VerarbeiteDatensatz(Table1);
Table1.Next;
end;
end;
Wenn nun der letzte Datensatz gelöscht wird, dann wird der vorletzte
zweimal verarbeitet, weil der ja aktiviert wird.
Wie macht man das nun richtig, ohne viel Verrenkungen?
Gruß aus den Bergen
Günter