Also deine ganze Schleife ist irgendwie verkorkst.
Entweder du löscht einen Datensatz oder du überspringst ihn mit
Next
(aber nicht beides!).
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
var
i : integer;
begin
ADODataSet1.First;
ProgressBar1.Max := ADODataSet1.RecordCount;
ProgressBar1.Min := 1;
ProgressBar1.Position := 1;
while not ADODataSet1.Eof do
begin
if ADODataSet1.FieldByName('DEU').AsString = ''
then
ADODataSet1.Delete
else
ADODataSet1.Next;
ProgressBar1.StepIt;
Application.ProcessMessages;
end;
end;
Und hier noch die schnellere Variante mit
SQL; dabei kannst du dir den Progressbar sparen weil es so schnell geht.
Delphi-Quellcode:
begin
ADOCommand1.CommandText := 'DELETE FROM Tabelle WHERE (DEU='''') or (DEU IS NULL)';
ADOCommand1.Execute;