![]() |
Datenbank: Access • Version: 2007 • Zugriff über: ADODataSet
ADODataSet Der Vorgang ist in diesen Zusammenhang nicht zugelassen
Hallo,
habe eine Tabelle in Access ID,Preis,DEU. Nun wollte ich wenn in DEU kein Eintrag ist den aktuellen Datensatz löschen. Aber denne kommt nach der Ausführung eine Fehlermeldung: Der Vorgang ist in diesen Zusammenhang nicht zugelassen. (ich bin kein Profi):oops: Was läuft da falsch? Hier mal der Code:
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
var i : integer; begin while not ADODataSet1. Eof do begin ADODataSet1.Edit; if ADODataSet1.FieldByName('DEU').AsString = '' then ADODataSet1.DeleteRecords; ADODataSet1.Next; Application.ProcessMessages; with ProgressBar1 do begin Min := 0; Max := ADODataSet1.RecordCount; for i := Min to Max do Position := i; ADODataSet1.Next; end; end; end; |
AW: ADODataSet Der Vorgang ist in diesen Zusammenhang nicht zugelassen
Du hast aber schon mal mit dem Debugger kontrolliert was da abläuft?
und Du weißt das
Delphi-Quellcode:
Alle Datensätze löscht?
ADODataSet1.DeleteRecords;
Gruß K-H |
AW: ADODataSet Der Vorgang ist in diesen Zusammenhang nicht zugelassen
Upps, also dann delete nehm ich mal an.
|
AW: ADODataSet Der Vorgang ist in diesen Zusammenhang nicht zugelassen
Zitat:
Ich pers. ziehe eigentlich immer die Nutzung von SQL-Befehlen vor, aber jeder so wie er mag. Gruß K-H |
AW: ADODataSet Der Vorgang ist in diesen Zusammenhang nicht zugelassen
Also deine ganze Schleife ist irgendwie verkorkst.
Entweder du löscht einen Datensatz oder du überspringst ihn mit
Delphi-Quellcode:
(aber nicht beides!).
Next
Delphi-Quellcode:
Und hier noch die schnellere Variante mit SQL; dabei kannst du dir den Progressbar sparen weil es so schnell geht.
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;
Delphi-Quellcode:
begin
ADOCommand1.CommandText := 'DELETE FROM Tabelle WHERE (DEU='''') or (DEU IS NULL)'; ADOCommand1.Execute; |
AW: ADODataSet Der Vorgang ist in diesen Zusammenhang nicht zugelassen
Oih,da sieht man wieder wie dähhhmlich ich bin...:wall:
Mit der ersten Variante hat dies sofort funktioniert. Die zweite werde ich denne ausprobieren. Danke für die Hilfe :thumb::thumb::thumb: Leider habe ich Vollidiot die "Echte-DB" gerade in Betrieb.Die mit sehr vielen leeren Zeilen.(Tausende) Nach dem löschen der Datensätze will mein Programmchen immer ein "OK".:cyclops: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz