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;