Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: darehannes am 13.08.07 - 12:10:32
-
Hi Leute,
ich bekommt man denn am besten den Unterschied zweier date time items raus.
Am besten in Tagen.
Time differenz gibt bei mir nen Overflow.
mfg und danke
darehannes
-
Indem Du notesDateTime.TimeDifference() korrekt aufrufst?
Mehr Input, mehr Output.
-
TimeDifference liefert den Wert in Sekunden als einen Integer zurück und da gibts schnell den Overflow.
Deshalb immer TimeDifferenceDouble verwenden!
Andreas
-
Long (http://www.lotus.com/ldd/doc/domino_notes/7.0/help7_designer.nsf/f4b82fbb75e942a6852566ac0037f284/62de0cdbc54c43528525704a0040afee?OpenDocument), nicht Integer ;)
Und Andreas hat natürlich recht mit TimeDifferenceDouble(). ::)
-
Danke für die Antworten.
leider gibt mir die double Methode auch nen Overflow.
mfg
darehannes
-
Welche Datumswerte vergleichst Du denn?
Entstehung des Universum mit voraussichtlichem Ende ;D
Spaß beiseite: poste doch mal den Code.
Schreibst Du die Differenze in eine Variable? Hast Du diese auch als Double (und nicht als Long) deklariert?
Andreas
-
nein die beiden daten liegen maximal 1 jahr auseinander
mfg
-
Wir Brauchen Code, Code !
Wir Brauchen Code! - Was Geht’n Alter?
Code, Code, wir Brauchen Code! - Seid Ihr Down ?
türlich Türlich - Sicher Dicker
türlich Türlich – Is Alles Klar ?
türlich Türlich - Sicher Dicker
türlich Türlich - Seid Ihr Da ?
-
Türlich O0
Dim wks As New NotesUIWorkspace
Dim doc As NotesDocument
Dim beginn As NotesItem
Dim hf As Notesitem
Dim beginntime As NotesDateTime
Dim hftime As NotesDateTime
Dim i As Integer
Set doc = wks.CurrentDocument.Document
Set beginn = doc.GetFirstItem("Vertragsbeginn")
Set hf = doc.GetFirstItem("Hauptfälligkeit")
Set beginntime = beginn.DateTimeValue
Set hftime = hf.DateTimeValue
i = (hftime.TimeDifferenceDouble(beginntime))
Messagebox i/86400
If doc.Berechnungsbasis(0) = "Basis 360 Tage" Then
doc.Erstbeitrag = ((i / 86400) * doc.Jahresbeitrag(0)) / 360
Else
doc.Erstbeitrag = ((i/86400) * doc.Jahresbeitrag(0)) / 365
End If
-
Dim i As Integer
sagte ich nicht, als DOUBLE deklarieren :o
Set beginn = doc.GetFirstItem("Vertragsbeginn")
das funktioniert doch nicht. Du musst sowas machen:
Set beginn = new NotesDateTime( doc.GetFirstItem("Vertragsbeginn")(0) )
Andreas
-
Schau dir diese beiden Zeilen mal genauer an.
Dim i As Integer
...
i = (hftime.TimeDifferenceDouble(beginntime))
Fällt dir dabei was auf?
Der Rückgabewert der Funktion ist ein Double-Wert und den weist du einer Integer-Variable zu. Das kann nicht gut gehen.
Axel
-
Vielen Dank,
es lag wirklich an der Integerdeklaration.
mfg
darehannes
-
Schade, daß der Debugger noch nicht erfunden wurde ...
-
Ja, der wäre in solchen Fällen wirklich praktisch. ::)
-
Soll angeblich in Release 8 noch eingebaut werden... :P
-
Ich habe ihn in meinem Client an einer recht versteckten Stelle unter "Datei" gefunden. Muss wohl schon länger da sein ...