![]() |
Delphi-Version: 5
Problem TDate/TDataTime >zu> Integer >zu> String
Hallo,
In meinem Programm werde Datumwerte als [Datum] Integer / [Std] Integer + [Min] Integer in der Datenbank gespeichert. Das habe ich gemacht weil Datum und Zeit immer wieder zerlegt werden müssten. Die Eingabe des Nutzers werden getrennt 1) Datum 2) von/bis als Std/Min. Jetzt brauche ich die Stundenwerte des letzten Monats:
Code:
dtA zeigt 41640 = 01.01.2014
function DaysOfMonth(ADate:TDate; corrMonth):String;
... DecodeDate(ADate, Year,Month,Day); IncAMonth(Year,Month,Day,corrMonth); dtA := EncodeDate(Year,Month,1); dtE := EndOfAMonth(Year,Month); dtE zeigt 41671 = 01.02.2014 - in den SQL_String kommt:
Code:
Ich wandele also die TDate-Werte in Strings um.
Result := ' (('+DateField+' >= '+sdtA+') AND ('+DateField+' < '+sdtE+')) ';
Code:
dtE = 41671 !!!
sdtE := IntToStr(Trunc(dtE));
sdtE = 41670 !!! Es werden nur die Datumsanteile benutzt und Ganzzahlen angezeigt. Wie kann das sein? Welche Möglichkeiten gibt es das zu vermeiden? |
AW: Problem TDate/TDataTime >zu> Integer >zu> String
Ich hab garnicht verstanden, was du überhaupt willst und wo das Problem ist?
Die großen Zahlen sind natürlich das, was man auch in der Beschreibung zu ![]() Ich glaub jetzt hab ich's verstanden. Wie ist denn EndOfAMonth im D2007 deklariert? Vielleicht ist da ja ein Bug drin. Und die Delphi-Updates hast du auch installiert? (nicht daß der vermeintliche Bug schon behoben wurde) In aktuelleren Delphis geht das zumindestens:
Delphi-Quellcode:
ShowMessage(DateToStr(41640) + ' ' + DateToStr(41671) + sLineBreak +
DateToStr(EncodeDate(2014, 01, 01)) + ' ' + DateToStr(EndOfAMonth(2014, 01))); Info für Andere, welche hier mitlesen: Statt Trunc besser ![]()
Delphi-Quellcode:
function DaysOfMonth(ADate: TDate; CorrMonth: Integer): String;
... CDate := IncMonth(ADate, CorrMonth); dtA := StartOfTheMonth(CDate); dtE := EndOfTheMonth(CDate); |
AW: Problem TDate/TDataTime >zu> Integer >zu> String
Zitat:
Davon ab, daß die Speicherung der DateTimes als...Konstrukt auch schon übel war. Schlimm, daß sich sowas immer erst Jahre später rächt, und nicht sofort. Sherlock |
AW: Problem TDate/TDataTime >zu> Integer >zu> String
Könnte es sein, das hier ein Mißverständnis vorliegt?
Code:
41670 = 31.01.2014 23:59:59
dummy:=endofamonth(2014,01);
caption:=inttostr(trunc(dummy))+' = '+datetimetostr(dummy); 41671 wäre "Startofamonth" ?? Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz