PDA

Vollständige Version anzeigen : Zum Ausprobieren: Riesenproblem mit Datum !


joesip
09.02.2001, 14:27
Hallo,

habe immer noch ein Riesenproblem mit dem Datum:
Dazu folgender Code:

Dim zt As Date
Dim i As Double

zt = #2/19/2001 9:00:00 AM#

Debug.Print zt, CDbl(zt)

For i = 1 To 30
zt = DateAdd("n", 10, zt) ' Zeit erhöhen
Debug.Print zt, CDbl(zt), CDate(CDbl(zt)), CDbl(#2/19/2001 10:40:00 AM#)
Next i

Debug.Print (#2/19/2001 10:40:00 AM#); CDbl(#2/19/2001 10:40:00 AM#)
Debug.Print (#2/19/2001 12:10:00 PM#); CDbl(#2/19/2001 12:10:00 PM#)
Debug.Print (#2/19/2001 12:30:00 PM#); CDbl(#2/19/2001 12:30:00 PM#)

usw.

Warum kommen da beim CDbl unterschiedliche Werte raus (letzte Kommastelle) ??
Ich speichere mit DateAdd erzeugte Datümer ab und greife nachher wieder drauf zu - und das klappt dann manchmal halt nicht.

Ich bin verzweifelt.

Gruß und danke im voraus für Hilfe.

joesip

holgii
13.02.2001, 10:11
Hallo Joesip,

der Fehler tritt an meinem Rechner ebenfalls auf. Deine Frage nach dem WARUM? kann ich Dir leider nicht beantworten, aber einen sogenannten "Workaround" hätte ich zu bieten:

Nachdem Du die DateAdd-Funktion benutzt hast,
wandelst Du das Ergebnis in einen String um,
den Du anschliessend wieder in das Datum-Format bringst. Beim Umwandeln dieses Datums ins Double-Format treten diese Abweichungen in der letzten Dezimalstelle nicht mehr auf.


Dim zt As Date
Dim i As Double
Dim str-zt as string

zt = #2/19/2001 9:00:00 AM#

Debug.Print zt, CDbl(zt)

For i = 1 To 30
zt = DateAdd("n", 10, zt) ' Zeit erhöhen
str-zt = CStr(zt)
zt = CDate(str-zt)
Debug.Print zt, CDbl(zt), CDate(CDbl(zt)), CDbl(#2/19/2001 10:40:00 AM#)
Next i


Viele Grüße

holgii

joesip
13.02.2001, 19:15
Hi Holgii,

danke für Deinen Rat - hab's grad ausprobiert - es funkt. Werd das jetzt so einbauen.

Bin ganz froh, daß das auch bei jemand anders nachvollziehbar ist. Mich beunruhigt so etwas immer - einfach, weil man's nicht erklären kann - ich habe x Stunden verbracht, das überhaupt rauszufinden.

Tschüs

joesip