![]() |
SQL Befehl Datum zwischen x und x funktioniert nicht richtig
Hallo,
ich greife über Delphi mit einem ADODATASET auf eine Access Datenbank zu. Leider funktioniert der Befehl nicht Das Datum wird auf das in Access übliche Format angepasst:
Delphi-Quellcode:
Datum_von:='#'+datetostr(DTP_Wiedervorlagen_von.Date)+'#';
Datum_von:=stringreplace(Datum_Von,'.','/', [rfReplaceAll]); Datum_bis:='#'+datetostr(DTP_Wiedervorlagen_bis.Date)+'#'; Datum_bis:=stringreplace(Datum_bis,'.','/', [rfReplaceAll]); Befehl in Delphi:
Delphi-Quellcode:
DSet_Wiedervorlage.CommandText:='SELECT * FROM Wiedervorlage WHERE Datum Between '+Datum_von+' And '+Datum_bis+' and VBNummer='+inttostr(VBNummer)+' order by Datum';
Befehl zur Laufzeit:
Delphi-Quellcode:
SELECT * FROM Wiedervorlage WHERE Datum Between #03/02/2004# And #16/03/2004# and VBNummer=62826106 order by Datum
Nun zum Fehler wenn ich das Datum ändere das heist Datum z.B.: vom 20.02.2004 bis 16.03.2004 dann kommen drei Datensätze. Wenn ich aber Datum vom 03.02.2004 bis 16.03.2004 kommt kein Datensatz, obwohl eigentlich 3 stück kommen müssten. Also nach meiner Ansicht vertauscht der Tag + Monat... Kann das an der DateTimePickler Datumskomponente liegen? Woran kann das liegen??? |
Re: SQL Befehl Datum zwischen x und x funktioniert nicht ric
Warum so umständlich ? Wie wärs hiermit:
Delphi-Quellcode:
Gruß,
Datum_von := FormatDateTime('#yyyy/mm/dd#',DTP_Wiedervorlagen_von.Date);
Datum_bis := FormatDateTime('#yyyy/mm/dd#',DTP_Wiedervorlagen_bis.Date); Marcel |
DP-Maintenance
Dieses Thema wurde von "Daniel" von "Sonstige Fragen zu Delphi" nach "Datenbanken" verschoben.
Das sieht mir sehr verdächtig nach einer Datenbank-Frage aus. Und ab damit. ;-) |
Re: SQL Befehl Datum zwischen x und x funktioniert nicht ric
Wie wäre es denn auf die einfache Art (und vor allem ohne implizierte Umwandlungen!)
Delphi-Quellcode:
With ADOQuery Do
Begin SQL.Text := 'SELECT *' + #10 + 'FROM Wiedervorlage' + #10 + 'WHERE Datum BETWEEN :i_Datum_von AND :i_Datum_bis AND' + #10 + ' VBNummer = :i_VBNummer' + #10 + 'ORDER BY Datum'; // Parsing des Statements um Query Parameter zu finden... Prepared := True; // Werte an Query Parameter übergeben... Parameters.ParamByName('i_Datum_von').DataType := ftDateTime; Parameters.ParamByName('i_Datum_bis').DataType := ftDateTime; Parameters.ParamByName('i_VBNummer').Value := VBNummer; Parameters.ParamByName('i_Datum_von').Value := DTP_Wiedervorlagen_von.Date; Parameters.ParamByName('i_Datum_bis').Value := DTP_Wiedervorlagen_bis.Date; Open; End; |
Re: SQL Befehl Datum zwischen x und x funktioniert nicht ric
danke für die tipps, ich probiere es gleich mal aus.
Ich bin nicht so der Delphi profi, lerne mir viele sachen selbst, deswegen siehts manchmal etwas umständlich aus :-) |
Re: SQL Befehl Datum zwischen x und x funktioniert nicht ric
Du willst gar nicht wissen, wie meine ersten Anwendungen vor ca. einem Jahr aussahen. :mrgreen:
|
Re: SQL Befehl Datum zwischen x und x funktioniert nicht ric
Hallo X21Carsten,
beim BETWEEN mit Datumswerten muss man aufpassen. Denn ein reiner Datumswert stellt immer den Tag um 0:00 dar. wenn Du DateTime Werte in der Datenbank hast, muss deshalb der Wert-Bis (nach dem AND) einen Tag grösser sein. In Deinem Beispiel müsstest Du dann abfragen bis zum 17.3. bye |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:50 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