![]() |
DateTime als Parameter übergeben
Hallo!
Hab da mal wieder ein kleines Problemchen und kann in der OH nicht wirklich was finden, was mir hilft. Ich habe drei SQL Abfragen, die jeweils an eine Funktion übergeben werden, die ein DataGrid füllt. Dabei sind meine Abfragen jeweils auf einen Zeitraum spezifiziert, also BETWEEN startdatum AND enddatum. Die beiden Werte (start- und enddatum) möchte ich als Parameter übergeben. Wie mache ich das? Wie erstelle ich die Parameter und wie übergebe ich sie? Hab folgenden Code:
Delphi-Quellcode:
Aber so funktioniert das nicht... :gruebel:
sqlBefehl1 := 'SELECT * FROM Garantie_View WHERE (ablaufdatum BETWEEN ' +
''':startdatum'' AND '':enddatum'')'; sqlBefehl2 := 'SELECT * FROM Garantie_View WHERE (bf_pov_feld_5 BETWEEN ' + ''':startdatum'' AND '':enddatum'')'; sqlBefehl3 := 'SELECT * FROM Garantie_View2 WHERE (bf_pov_feld_5 BETWEEN ' + ''':startdatum'' AND '':enddatum'')'; qryDatenbank.ParamByName('startdatum').AsTime := Date; qryDatenbank.ParamByName('enddatum').AsString := m_end_Datum; rowZaehler := 1; //Füllt das DataGrid und anschließend das StringGrid FillGrid(sqlBefehl1, rowZaehler, true); FillGrid(sqlBefehl2, rowZaehler, true); FillGrid(sqlBefehl3, rowZaehler, false); |
Re: DateTime als Parameter übergeben
Hi
In deinem Code ist die Stringverarbeitung nicht ganz sauber. Hier die korrigierte Version
Delphi-Quellcode:
Gruß
sqlBefehl1 :=
'SELECT * FROM Garantie_View WHERE (ablaufdatum BETWEEN ' + ':startdatum AND :enddatum)'; sqlBefehl2 := 'SELECT * FROM Garantie_View WHERE (bf_pov_feld_5 BETWEEN ' + ':startdatum AND :enddatum)'; sqlBefehl3 := 'SELECT * FROM Garantie_View2 WHERE (bf_pov_feld_5 BETWEEN ' + ':startdatum AND :enddatum)'; // der rest genauso ken |
Re: DateTime als Parameter übergeben
Fehlermeldung:
"Parameter Startdatum nicht gefunden" "Parameter Enddatum nicht gefunden" |
Re: DateTime als Parameter übergeben
Okay, ich glaub, ich hab den Fehler...
Hab Start- und Enddatum zur falschen Zeit zugewiesen :wall: - darf erst in der Funktion FillGrid nach der Zuweisung des SQL-Textes geschehen... Damit sollte es funktionieren. :thumb: |
Re: DateTime als Parameter übergeben
Zitat:
AsDate, AsTime und As DateTime haben alle den Typ TDateTime. Wenn Du nur eine Datum (Uhrzeit = '00:00:00') hast, verwende ParamByName('...').AsDate. Wenn Du nur eine Uhrzeit hast, verwende ParamByName('...').AsTime. Wenn Du einen Wert mit Datum und Uhrzeit hast, verwende ParamByName('...').AsDateTime. Ich würde kein Datum mit AsTime übergeben. Das mag zwar funktionieren, aber in einer anderen Delphi Version z.B. D2006 kann das schon anders sein. Ich verwende daher grundsätzlich AsDateTime.
Delphi-Quellcode:
sqlBefehl1 := 'SELECT * FROM Garantie_View WHERE (ablaufdatum BETWEEN ' +
':startdatum AND :enddatum)'; qryDatenbank.SQL.Text := sqlBefehl1; qryDatenbank.ParamByName('startdatum').AsDate := Date; qryDatenbank.ParamByName('enddatum').AsDateTime := StrToDateTime(m_end_Datum); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04: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