Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL-Abfrage mit Datum (https://www.delphipraxis.net/36030-sql-abfrage-mit-datum.html)

stoermi 14. Dez 2004 21:34


SQL-Abfrage mit Datum
 
Was könnte hieran falsch sein?
Delphi-Quellcode:
sql.add('SELECT COUNT(*) AS belegt FROM tabelle.db WHERE anreise<= ' + QuotedStr(datum.AsDate) + ' AND abreise> ' + QuotedStr(datum.AsDate));
datum ist eine Variable vom Typ TDate!
anreise & abreise sind in der Paradox7-Tabelle von Typ Datum!

Es kommt ein Fehler in der Art: Record, Objekt oder Klassentyp erforderlich

urs.liska 15. Dez 2004 01:19

Re: SQL-Abfrage mit Datum
 
Der Teil ".AsDate" ist falsch.
So etwas ginge nur, wenn "datum" ein Objekt oder ein Record oder ein Klassenreferenz wäre, das/der/die eine Eigenschaft "AsDate" hat. Der Typ TDate hat so etwas aber nicht, sondern man muss auf ihn mit der Funktion "DateToStr" zugreifen.

Deine Zeile müsste lauten:
Code:
sql.add('SELECT COUNT(*) AS belegt FROM tabelle.db WHERE anreise<= ' + QuotedStr(DateToStr(datum)) + ' AND abreise> ' + QuotedStr(DateToStr(datum)));
Ob der Aufruf von QuotedStr genau das richtige Ergebnis erzeugt, habe ich jetzt nicht überprüft, aber das sollte schon stimmen.

Viel Erfolg
Urs

Leuselator 15. Dez 2004 01:23

Re: SQL-Abfrage mit Datum
 
Sicherer, wenn auch auf den ersten Blick unbequemer, ist die Verwendung von Parametern. Mit dem Konstrukt:
Delphi-Quellcode:
SQL.text := 'SELECT * FROM Bla WHERE '+QuotedStr(DateToStr(DatumsVariable));
sind die tollsten Probleme vorprogrammiert, sobald das auf Client/Server läuft und auf Client und Server unterschiedliche Datumsformate eingestellt sind - dann geht es einfach nur nach hinten los.
Gruß


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