![]() |
Datenbank: Access • Version: 2003 • Zugriff über: ADO
Datumsübergabe funktioniert nicht einwandfrei
Hallo,
ich habe Probleme mit nachfolgender Abfrage:
Delphi-Quellcode:
Wenn ich hier einen Zeitraum im DateTimePicker vom 01.01.2005 bis 31.12.2005 auswähle, liefert mir die Select Anweisung auch die Datensätze aus 2006 schon mit, was falsch ist. Ich verzweifele so langsam. Wer kann mir helfen? Die Datumsformatierung müsste doch so stimmen, oder?ADOQuery_Berichte.Close; ADOQuery_Berichte.SQL.Clear; with ADOQuery_Berichte do begin SQL.Text:= 'SELECT buchung.anreise, buchung.abreise, Buchung.gid, adressen.gid,'+#13#10+ 'FROM (buchung LEFT JOIN adressen ON Buchung.gid=adressen.gid)'+#13#10+ 'WHERE (buchung.anreise >= :datevon1) AND (buchung.abreise <= :datebis1)'+#13#10+ 'ORDER BY buchung.anreise'; with Parameters do begin ParamByName('datevon1').DataType := ftDate; ParamByName('datevon1').Value := Int(DateTimePicker21.Date); ParamByName('datebis1').DataType := ftDate; ParamByName('datebis1').Value := Int(DateTimePicker22.Date); ParamValues['objekt1']:=oid_zusatz; ParamValues['wohnung1']:=wid_zusatz; end; //ExecSQL; ADOQuery_Berichte.Open; DateTimePicker21 und 22 sind bei Format mit dd.mm.yyyy gesetzt. |
Re: Datumsübergabe funktioniert nicht einwandfrei
Hi,
schau dir dies hier mal an:
Delphi-Quellcode:
StrToDateTime(FormatDateTime('dd.mm.yyyy ', dtpende.Date) + FormatDateTime('hh:nn:ss', StrToTime(varendzeit)))
farmatdatetime ist Bestandteil der Unit "DateUtils". Da ist viel nützliches für Datum und Uhrzeit drin! Gruß |
Re: Datumsübergabe funktioniert nicht einwandfrei
Das wird Dein Problem vermutlich nicht lösen, aber ich hab immer Probleme mit reinen Datums- (ftDate) bzw. Zeitangaben (ftTime) gehabt. Ich verwende nur ftDateTime und setze den Zeitraum auf (z.B.) '1.1.2005 - 31.12.2005 23:59:59'.
Desweiteren solltest Du versuchen, mit "between" zu arbeiten, das ist i.A. schneller. Also "DateField between :Datum1 and :Datum2". |
Re: Datumsübergabe funktioniert nicht einwandfrei
Kann mir mal jemand schreiben wie ich das komplett abändern soll, damit es richtig funktioniert?
|
Re: Datumsübergabe funktioniert nicht einwandfrei
Hallo.
Wenn dein Statement sich doch nicht ändert, dann solltest du es der SQL-Eigenschaft nicht jedesmal neu zuweisen. Wenn du dein Statement der Text-Eigenschaft zuweist, dann ist SQL.Clear überflüssig. Das Format deines DateTimePickers spielt bei deiner Vorgehensweise keine Rolle. Der BETWEEN Operator bringt dir nichts, wenn du Überdeckungsintervalle durchsuchst (hallo alzaimar). Die Klammerung deiner FROM-Klausel finde ich originell - gut, dass der SQL Parser Spaß versteht. Und außerdem hast du uns nicht das echte Statement gezeigt.
Delphi-Quellcode:
Grüße vom marabu
uses
DateUtils; const SEL = 'select b.gid, b.anreise, b.abreise from buchung b ' + 'left join adressen a on b.gid = a.gid ' + 'where b.anreise >= :dateFrom and b.abreise <= :dateTo ' + 'order by b.anreise' ; begin with ADOQuery_Berichte do begin Close; with Parameters do begin ParamValues['dateFrom'] := Trunc(DateTimePicker21.Date); ParamValues['dateTo'] := Trunc(DateTimePicker22.Date) + 1 - OneSecond; ... end; Open: end; end; |
Re: Datumsübergabe funktioniert nicht einwandfrei
Hi marabu! Man wird alt :nerd:...
|
Re: Datumsübergabe funktioniert nicht einwandfrei
Zitat:
"a between b and c" ist das gleich wie "b <= a and a <= c" Oder ich werde alt.... :gruebel: |
Re: Datumsübergabe funktioniert nicht einwandfrei
Hier ist es aber a>=b and c<=d (a=Anreise, c=Abreise)
Oh man, das geht ja immer früher los, mit der Senilität :zwinker: ? Beruhigend, das es vielleicht nur an der fortgeschrittenen Stunde liegt, oder dem Bier :cheers: ? |
Re: Datumsübergabe funktioniert nicht einwandfrei
Zitat:
Schönen Sonntagabend noch und sorry für meinen neck-mounted OffTopic Bullshit generator... :duck: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:21 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