Delete und EOF

13/07/2012 - 09:32 von Günter Kieninger | Report spam
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


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
 

Lesen sie die antworten

#1 Georg Hübner
13/07/2012 - 10:10 | Warnen spam
Hallo,
...
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?


...

ich würde in diesem Fall zwei Schleifen bauen.
Erst eine, die alles löscht was nicht gebraucht wird und dann
in einer zweiten danach die Datensatzverarbeitung.

Ist vielleicht nicht die optimalste Lösung, aber funktioniert.

Gruß

Georg Hübner

Ähnliche fragen