Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datum als Parameter für MS-SQL-Server übergeben (https://www.delphipraxis.net/128648-datum-als-parameter-fuer-ms-sql-server-uebergeben.html)

stefan681 3. Feb 2009 13:20

Datenbank: MS SQL Server • Version: 2008 • Zugriff über: ADO

Datum als Parameter für MS-SQL-Server übergeben
 
Hallo,

ich habe folgendes Problem:

Ich möchte auf einen SQL-Server 2008 zugreifen über eine ADO-Query. Diese Query müsste ich auf einem Datumsbereich begrenzen:

SQL-Code:
'SELECT c001, c080 FROM Table WHERE c080 between :PVon and :PBis'
Die Spalte c080 ist ein Datumswert.

So würde ich dann in Delphi weiter schreiben:

Delphi-Quellcode:
ADOQuery1.Parameter[0].Value := StrToDate('01.01.2009');
ADOQuery1.Parameter[1].Value := StrToDate('31.01.2009');
Wenn ich die Query Active setze, bekomme ich eine Fehlermeldung, das das Feature nicht implementiert ist.

In welchem Format müss ich das Datum angeben, damit der SQL-Server es versteht?

Vielen Dank.

Stefan

shmia 3. Feb 2009 13:30

Re: Datum als Parameter für MS-SQL-Server übergeben
 
Versuch's mal so:
SQL-Code:
SELECT c001, c080 FROM Table WHERE (c080 => :PVon) and (c080 < :PBis)
und dann:
Delphi-Quellcode:
ADOQuery1.Parameters.ParamValues['PVon'] := StrToDate('01.01.2009');
ADOQuery1.Parameters.ParamValues['PBis'] := StrToDate('31.01.2009') + 1.0;
Hier gibt es zwei Dinge hervorzuheben:
* die Schreibweise .ParamValues[] drückt genau aus, welchen Parameter du befüllst
* die Abfrage liefert alle Datensätze zwischen 01.01.2009 0:00 Uhr bis 31.01.2009 23:59:59.999 Uhr
Der 31.01.2009 plus 1 Tag wäre ja der 01.02.2009 0:00Uhr; da die Bedinung aber auf "kleiner" lautet, ist der 1.2.2009 nicht eingeschlossen.

PS: das Feld c080 sollte natürlich den Datentyp "datetime" oder "smalldatetime" haben.

nahpets 3. Feb 2009 13:33

Re: Datum als Parameter für MS-SQL-Server übergeben
 
Hallo,

probiere mal bitte
Delphi-Quellcode:
ADOQuery1.Parameter[0].Value := '01.01.2009';
ADOQuery1.Parameter[1].Value := '31.01.2009';


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:33 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