Hallo Leute,
ich hab hier ein witziges Problem.
Delphi7, Firebird
SQL Server
In einem DBGrid (defaultdrawing=flase) - in der Procedure OnDrawDataCell rechne ich mir aus,
ob ein Datensatz in einem bestimmten Zeitraum fällt - wenn ja, setzt ich die Farben anders.
-es wird aber kein passender Datensatz gefunden, obwohl einer existiert !
Ich suche:
Datensätze, die größer/gleich 13.03.2009 sind
Datensätze, die kleiner/gleich 13.03.2009 sind
Demodatensatz/Feld'CREATE_DATE'/Wert= 13.03.2009
Delphi-Quellcode:
// x1,x2,x3 sind Integer;
// temp_datums_dinger sind TDateTime;
// DBGrid ist ein TwwDBGrid;
procedure TForm.dbobenDrawDataCell(Sender: TObject;
const Rect: TRect; Field: TField; State: TGridDrawState);
begin
...
..
temp_bis_date := bis_datepicker.DateTime;
//TDateTimePicker
temp_von_date := von_datepicker.DateTime;
//TDateTimePicker
temp_my_date := data_form.STRUCTURE.FieldByName('
CREATE_DATE').AsDateTime;
// Query auf Table
x1:=CompareDateTime(temp_von_date,temp_my_date);
x2:=CompareDateTime(temp_bis_date,temp_my_date);
x3:=CompareDateTime(temp_bis_date,temp_von_date);
memo2.Lines.Append('
');
memo2.Lines.Append(datetostr(temp_von_date)+'
x1:'+inttostr(x1));
memo2.Lines.Append(datetostr(temp_bis_date)+'
x2:'+inttostr(x2));
memo2.Lines.Append(datetostr(temp_my_date)+'
x3:'+inttostr(x3));
if ((x1=-1)
or (x1=0))
AND ((x2=1)
or (x2=0))
then
begin
showmessage('
bin drin');
end;
..
.
Hab ein Memo auf die Form geklatscht und mir die Daten ins Memo schreiben lassen..
Dort stehen die Datumswerte richtig - aber CompareDateTime "rechnet in dem Moment nicht richtig" ???
Text aus dem Memo2:
- 13.03.2009 x1:1
13.03.2009 x2:1
13.03.2009 x3:0
13.03.2009 x1:1
13.03.2009 x2:1
13.03.2009 x3:0
13.03.2009 x1:1
13.03.2009 x2:1
13.03.2009 x3:0
..ich versteh einfach nicht warum x1 und x2 den Wert "1" haben !
Hat jemand eine Idee ?
Vielen Dank
Erich
Erich Wanker - for life:=1971 to lebensende do begin ..