![]() |
Datenbank: Paradox • Version: 7 • Zugriff über: BDE
Alle Datensätze mit veraltetem Datum löschen
Hallo DPler,
ich hatte die Idee einen TV Show Reminder in Delphi zu schreiben, der auf eine simple Datenbank zugreift. Mir ist bewusst, dass Paradox verrufen ist, aber das ist nun mal Vorgabe. Laut dem Delphi-Treff kann man einen Datensatz aus der Table einfach mit .Delete löschen. Soweit so gut, nur jetzt bekomm ich ständig Exceptions "Bei leerer Datenmenge nicht möglich". Ich hab versucht das mit If-Abfragen abzufangen, was folgendermaßen aussieht:
Delphi-Quellcode:
Chaotisch, ich weiß, aber ich arbeite dran. Wird beim Fragedialog Nein Gedrückt passiert nichts: Gut! Aber sobald die Table Datensätze enthält und mit einem Klick auf Ja die veralteten Datensätze entfernt werden, kommt genannter Fehler, falls dadurch jeder Datensatz entfernt wird. Ich vermute mal, da steckt wieder irgendwo der Wurm in der Schleife, nur find ich ihn nicht wirklich.
if not Table1.Eof = true then begin
if Table1.FieldByName('Datum').AsDateTime < Now then //Abgelaufene Daten automatisch löschen begin if MessageDlg('Veraltete Datensätze gefunden. Löschen?',mtConfirmation,mbYesNo,0,mbYes) = mrYes then for I := 0 to Table1.Fields.Count - 1 do Table1.Delete; end; end; Über Tipps wär ich sehr dankbar! MfG, SoD |
Re: Alle Datensätze mit veraltetem Datum löschen
Delphi-Quellcode:
While not Table.Eof do
begin if Table1.FieldByName('Datum').Value < Now then Table1.Delete else Table.Next; end; |
Re: Alle Datensätze mit veraltetem Datum löschen
Wieso das Next im else-Zweig? Das müsste doch eine Endlosschleife produzieren, oder täusche ich mich?
[edit] Achnee, der nächste Datensatz wird ja dann zum aktiven, sry [/edit] |
Re: Alle Datensätze mit veraltetem Datum löschen
Vielen Dank für die schnelle Antwort, hat geklappt! :D
|
Re: Alle Datensätze mit veraltetem Datum löschen
Warum wird hier nicht einfach ein SQL-Statement abgesetzt?
Delphi-Quellcode:
Query.SQL.Text:='DELETE FROM tabelle WHERE datum < :datum';
Query.ParamByName('datum').asDateTime:=Now; Query.ExecSQL; |
Re: Alle Datensätze mit veraltetem Datum löschen
Würde ich grundsätzlich auch so machen, bei der BDE ist es aber eh egal
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 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 by Thomas Breitkreuz