![]() |
date und string
hi leute,
hab folgendes problem: will mit hilfe von zwei datetimepickern einen datumsbereich auswählen und dann in meiner datenbank prozesse selektieren, die teil dieses bereiches sind. dazu sind in der datenfelder zwei spalten vom type datum/zeit die den anfang und das ende der prozesse bestimmen. ich übergebe den inhalt der beiden datetimepicker an zwei variablen vom typ string und baue diese dann in meine Abfrage ein. dann bekomme ich ne fehlermeldung "datentypen in kriterienausdruck unverträglich. ich weiß, dass diese kommt, weil ich strings in den datumsfeldern abfragen möchte. setze ich nun meine variablen (für die datetimepicker) auf den typ tdatetime, kann ich sie nicht in meinen sql-string einbauen, ändere ich aber in der datenbank die beiden spalten auf den typ text, verfälscht das total mein ergebnis (keine ahnung warum)... hat jemand evtl. nen vorschlag, wie ich das problem lösen könnte? probier hier die ganze zeit rum, aber komm nicht weiter... :(
Code:
procedure TPlanung.Button1Click(Sender: TObject);
var db :String; var de :String; begin db := datetostr(DateTimePicker1.Date); de := datetostr(DateTimePicker2.Date); ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('SELECT DATAUS.Name AS Prozess, DATAUS.Anfang, DATAUS.Ende FROM DATAUS WHERE (((DATAUS.Anfang <= '+QuotedStr(db)+') AND (DATAUS.Ende >= '+QuotedStr(de)+')) OR ((DATAUS.Anfang >= '+QuotedStr(db)+') AND (DATAUS.Anfang <= '+QuotedStr(de)+') AND (DATAUS.Ende >='+QuotedStr(de)+')) OR ((DATAUS.Anfang <= '+QuotedStr(db)+') AND (DATAUS.Ende >= '+QuotedStr(db)+') AND (DATAUS.Ende <= '+QuotedStr(de)+')) OR ((DATAUS.Anfang >= '+QuotedStr(db)+') AND (DATAUS.Anfang <= '+QuotedStr(de)+') AND (DATAUS.Ende >= '+QuotedStr(db)+') AND (DATAUS.Ende <= '+QuotedStr(de)+')))'); ADOQuery1.Open; DBGrid1.Visible :=True; DBGrid1.Repaint; end; |
Re: date und string
Hy weiss nicht ob dir das hilft.
ich frag das immer so ab: FormatDateTime('yyyy-mm-dd',dxDateEdit1.Date) Das Datumsfeld in der Datenbank ist Format DATETIME. |
Re: date und string
hab woanders noch was gefunden. man muss es dann nur so in seinen sql-string einbauen:
Code:
dann kann man's auch felder im datetime-format ansprechen...
... >=DATEVALUE('+QuotedStr(db)+') ...
|
Re: date und string
Zitat:
ich versuche in eine MS-SQL Datenbank zu importieren und bei mir kommt dann die Fehlermeldung das der DATEVALUE nicht kennt... |
Re: date und string
Hallo,
ich gehe einmal davon aus, dass Du evtl. eine Access-DB benutzt. Wenn ja, dann musst das Datumsformat von TT.MM.JJJJ nach MM/TT/JJJJ umformen. Die erreichst Du mit der Funktion FormatDateTime('mm/dd/yyyy', DateTimePicker1.Date). |
Re: date und string
Zitat:
Die Werte in dem Feld auf der DB (Es ist DateTime) liegen so vor: TT/MM/YYYY (Bsp.:23.06.2003 09:05:00), was ja eigentlich das richtige Format für SQL ist .... Ricane |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 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