Einzelnen Beitrag anzeigen

Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Problem mit Devart MyDac

  Alt 10. Nov 2019, 14:18
Hallo scrat1979
ich glaube Du hast recht.
Aber irgendwie funktioniert es nicht bei mir.
Habe mit EncodeTime gearbeitet.
Kannst Du mir mal ein Beispiel senden.
Danke und Gruß
Jürgen
Aber natürlich

Hier ist meine "Workaraound"-Funktion:

Delphi-Quellcode:
function RecodeDateTimeEx(ADateTime : TDateTime) : TDateTime;
begin
  Result := EncodeDateTime(YearOf(ADateTime), MonthOf(ADateTime), DayOf(ADateTime), HourOf(ADateTime), MinuteOf(ADateTime), SecondOf(ADateTime), 0); // ms spielen bei mir keine Rolle
end;
Folgendermaßen verwende ich die Funktion:

Delphi-Quellcode:
[...]
if FQuery.FieldByName('FeldName').AsDateTime = ZeitStempelZumVergleich then ... // Funktioniert nicht, obwohl Datum und Uhrzeit auch im Debugger identisch sind (wegen besagtem Umrechungsfehler)
if (RecodeDateTimeEx(FQuery.FieldByName('FeldName').AsDateTime) = RecodeDateTimeEx(ZeitStempelZumVergleich)) then ... // Funktioniert
[...]
Achte bitte noch darauf: Falls Du nur Uhrzeiten speicherst, aber ein Datum auch verwendet wird, vergisst nicht, dass Du Dir natürlich den Zeitstempel zuerst zusammenbauen musst:

Zeitstempel = DateOf(Datum) + TimeOf(Datum) Eventuell vergleichst Du nämlich einen Zeitstempel mit Datum und Uhrzeit mit einem Zeitstempel, welcher Nur die Uhrzeit beinhaltet. Da schlägt der Vergleich Zeistempel1 = Zeitstempel2 natürlich auch fehl, da sich das Datum unterscheidet! Hier wäre es mal interessant zu wissen, wie die Zeitstempel im Debugger beim Vergleich aussehen. Über die "Falle" des unterschiedlichen Datums beim VErgleich bin ich nämlich auch schon gestolpert...
Michael Kübler

Geändert von scrat1979 (10. Nov 2019 um 14:20 Uhr)
  Mit Zitat antworten Zitat