Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

AW: ADODataSet Der Vorgang ist in diesen Zusammenhang nicht zugelassen

  Alt 20. Aug 2013, 12:44
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;
fork me on Github

Geändert von sx2008 (20. Aug 2013 um 12:48 Uhr)
  Mit Zitat antworten Zitat