AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Fehler bei Datumsberechnung in Schleife-DbGridDrawDataCell
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler bei Datumsberechnung in Schleife-DbGridDrawDataCell

Ein Thema von erich.wanker · begonnen am 13. Mär 2009 · letzter Beitrag vom 13. Mär 2009
Antwort Antwort
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
461 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
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Fehler bei Datumsberechnung in Schleife-DbGridDrawDataCe

  Alt 13. Mär 2009, 16:34
Besser
Delphi-Quellcode:
temp_bis_date := Trunc(bis_datepicker.Date); //TDateTimePicker
...
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von erich.wanker
erich.wanker

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

Re: Fehler bei Datumsberechnung in Schleife-DbGridDrawDataCe

  Alt 13. Mär 2009, 16:44
das "Trunc" ist die Lösung ...

...vielen Dank!
Erich Wanker - for life:=1971 to lebensende do begin ..
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

Re: Fehler bei Datumsberechnung in Schleife-DbGridDrawDataCe

  Alt 13. Mär 2009, 16:56
Hallo,
Zitat von erich.wanker:
das "Trunc" ist die Lösung ...

...vielen Dank!
bei DateTime bitte nie vergessen, dass in den Nachkommastellen die Uhrzeit steht und die wird bei Deinen ursprunglichen Vergleichen mit berücksichtigt. Ein DateTimeToStr macht sowas dann sichtbar.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Fehler bei Datumsberechnung in Schleife-DbGridDrawDataCe

  Alt 13. Mär 2009, 17:00
Und Trunc schneidet den Nachkommaanteil ab, was dann in jedem Fall zu 00:00:00.00 Uhr führt
Markus Kinzler
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

Re: Fehler bei Datumsberechnung in Schleife-DbGridDrawDataCe

  Alt 13. Mär 2009, 17:11
Zitat von mkinzler:
Und Trunc schneidet den Nachkommaanteil ab, was dann in jedem Fall zu 00:00:00.00 Uhr führt
jaja, schon richtig, finde nur, man sollte wissen, warum man abschneidet
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Fehler bei Datumsberechnung in Schleife-DbGridDrawDataCe

  Alt 13. Mär 2009, 17:13
War ja auch eine Ergänzung zu deiner Aussage
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz