Thema: Delphi date und string

Einzelnen Beitrag anzeigen

jschade

Registriert seit: 11. Jul 2003
Ort: Hamburg
62 Beiträge
 
#1

date und string

  Alt 24. Jul 2003, 11:18
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;
  Mit Zitat antworten Zitat