Einzelnen Beitrag anzeigen

Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
460 Beiträge
 
Delphi XE4 Professional
 
#1

Fehler bei Datumsberechnung in Schleife-DbGridDrawDataCell

  Alt 13. Mär 2009, 16:24
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 ..
  Mit Zitat antworten Zitat