AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Alle Datensätze mit veraltetem Datum löschen
Thema durchsuchen
Ansicht
Themen-Optionen

Alle Datensätze mit veraltetem Datum löschen

Ein Thema von SoD · begonnen am 30. Jul 2009 · letzter Beitrag vom 30. Jul 2009
Antwort Antwort
Benutzerbild von SoD
SoD

Registriert seit: 9. Dez 2008
Ort: Oberasbach
33 Beiträge
 
Delphi 2007 Professional
 
#1

Alle Datensätze mit veraltetem Datum löschen

  Alt 30. Jul 2009, 15:17
Datenbank: Paradox • Version: 7 • Zugriff über: BDE
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:
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;
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.

Über Tipps wär ich sehr dankbar!

MfG,
SoD
Keinen Bock anständig zu debuggen?
try stuff;
except ShowMessage('Bug, bug, bug!!! Dont do this shit!');
end;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Alle Datensätze mit veraltetem Datum löschen

  Alt 30. Jul 2009, 15:20
Delphi-Quellcode:
While not Table.Eof do
begin
    if Table1.FieldByName('Datum').Value < Now then Table1.Delete else Table.Next;
end;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#3

Re: Alle Datensätze mit veraltetem Datum löschen

  Alt 30. Jul 2009, 15:22
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]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von SoD
SoD

Registriert seit: 9. Dez 2008
Ort: Oberasbach
33 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Alle Datensätze mit veraltetem Datum löschen

  Alt 30. Jul 2009, 15:59
Vielen Dank für die schnelle Antwort, hat geklappt!
Keinen Bock anständig zu debuggen?
try stuff;
except ShowMessage('Bug, bug, bug!!! Dont do this shit!');
end;
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Alle Datensätze mit veraltetem Datum löschen

  Alt 30. Jul 2009, 17:07
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;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Alle Datensätze mit veraltetem Datum löschen

  Alt 30. Jul 2009, 17:28
Würde ich grundsätzlich auch so machen, bei der BDE ist es aber eh egal
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz