AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbankabfrage auf Ereignisse zwischen Datum 1 und Datum 2
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbankabfrage auf Ereignisse zwischen Datum 1 und Datum 2

Ein Thema von Jens Hartmann · begonnen am 9. Jan 2010 · letzter Beitrag vom 30. Jan 2010
 
Benutzerbild von sx2008
sx2008

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

Re: Datenbankabfrage auf Ereignisse zwischen Datum 1 und Dat

  Alt 10. Jan 2010, 08:30
Man muss bei dieser Filterung auf einen Datumbereich etwas acht geben.
Manche Datenbanken kennen nur ein DateTime-Feld; also Datum und Uhrzeit zusammen.
Wenn die Abfrage alle Datensätze zwischen dem 1.1.2010 und dem 10.1.2010 liefern soll,
dann würde aber ein Datensatz mit dem Wert "10.1.2010 08:30:00" unter den Tisch fallen.

Daher muss die Abfrage und die Procedure leicht verändert werden.
Das Endedatum wird nicht mit <= sondern nur noch mit < verglichen.
Im Gegenzug wird der Parameter für das Endedatum um einen Tag in die Zukunft versetzt.
Delphi-Quellcode:
function NurDatumsAnteil(dt:TDateTime):TDate;
begin
  result := Int(dt);
end;

procedure THTMLExportForm.OpenTableDateRange(DateBegin,DateEnd : TDate; const Tablename : String);
begin
  QryHTML.SQL.Text := 'SELECT * FROM '+Tablename+' WHERE DATUM >= :ANFANG and DATUM < :ENDE';
  QryHTML.ParamByName('ANFANG').AsDate := NurDatumsAnteil(DateBegin);
  QryHTML.ParamByName('ENDE').AsDate := NurDatumsAnteil(DateEnd) + 1.0;
  QryHTML.Open;
Ich habe zusätzlich die Funktion NurDatumsAnteil() eingesetzt.
Manche werden sich vielleicht fragen: warum schreibt man dann nicht gleich Int(Date1) und Int(Date2)?
Durch die Verwendung dieser scheinbar überflüssigen Funktion habe ich meine Absicht klargemacht,
was der Code hier tun soll.
Man braucht so keine Kommentare um zu erklären was passiert.

Ich habe auch den Namen der Prozedur und dessen Parameternamen geändert, damit die Verwendung der Prozedur noch klarer wird.
fork me on Github
  Mit Zitat antworten Zitat
 


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 02:49 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