hi
ich hab ma nen Zeitrechner in VB geschrieben und wollte den jetzt in Notes mal umsetzen.
Doch leider bekomm ich einfachste Mathematische Operationen nicht auf die Kette...
(Lotus Notes 6.5.1)
Dim oUIDoc As NotesUIDocument
Set oUIDoc = oWorkspace.CurrentDocument
Dim oDoc As Notesdocument
Set oDoc = oUIDoc.Document
Dim pausenanfang As NotesDateTime
Dim pausenende As NotesDateTime
Dim pause As NotesDateTime
Set pausenanfang = Cdat(oDoc.pausenanfang)
Set pausenende = Cdat(oDoc.pausenende)
Set pause = pausenende - pausenanfang
oDoc.Pause_1 = pausenende
Einfach den Variablen Pausenanfang und Pausenende die Werte aus den entsprechenden Felder zuweisen, in der Variable pause dann das eine vom anderen abziehn und in das Feld Pause_1 schreiben.
Immer wieder bekomm ich Fehler, das da doch ein "Set" vorgehört, dann wieder nicht, und wenn nicht kommt "type missmatch".
Wie macht man per LS einfache Mathematische Operationen mit Uhrzeit Werten??^^
Könnte mir jmd. vllt. mal eine einfache Addition zeigen (variablendefinition etc)??
bin mit meinem Wissen und dem was ich so im Internet gefunden hab nicht weitergekommen.
mfg
Lukas
vielen dank ich guck ma, falls ich net weiterkomm meld mich mich nochma^^
mfg Lukas
EDIT:
gut ich komm doch net weiter, muss dazusagen ich hab so gut wie 0 Ahnung von Lotus Script.
Ganz vergessen hab ich, das der Code hinter einem Button liegt, also beim anklicken, soll berechnet werden.
Es sieht jetzt so aus, bekomme aber immernoch den "Type mismatch" Fehler bei der Zeile:
Set pause = pause + (pausenende - pausenanfang)
Dim oUIDoc As NotesUIDocument
Set oUIDoc = oWorkspace.CurrentDocument
Dim oDoc As Notesdocument
Set oDoc = oUIDoc.Document
Dim pausenanfang As NotesDateTime
Set pausenanfang = New NotesDateTime (oDoc.pausenanfang)
Dim pausenende As NotesDateTime
Set pausenende = New NotesDateTime (oDoc.pausenende)
Dim pause As NotesDateTime
Set pause = New NotesDateTime ("")
Set pause = pause + (pausenende - pausenanfang)
oDoc.Pause_1 = pausenende
mfg
Lukas
Versuchs mal so.
Dim dblDiff As Double
dblDiff = pausenende.TimeDifferenceDouble(pausenanfang)
oder
Dim lngDiff As Long
lngDiff = pausenende.TimeDifference(pausenanfang)
Du bekommt in beiden Faellen numerische Werte zurueckgeliefert, die die Anzahl an Sekunden angeben.
Nur einmal wird dieser Wert als LONG und das andere Mal als DOUBLE zurueckgeliefert.
Andreas
ok habs so gemacht und endlich kann ich das abspeichern^^
Code looks like this:
Dim oUIDoc As NotesUIDocument
Set oUIDoc = oWorkspace.CurrentDocument
Dim oDoc As Notesdocument
Set oDoc = oUIDoc.Document
Dim pausenanfang As NotesDateTime
Set pausenanfang = New NotesDateTime (oDoc.pausenanfang)
Dim pausenende As NotesDateTime
Set pausenende = New NotesDateTime (oDoc.pausenende)
Dim pause As Double
pause = pausenende.TimeDifferenceDouble( pausenanfang )
oDoc.Pause_1 = pause
Jetzt bekomm ich bei der Zeile:
"Set pausenanfang = New NotesDateTime (oDoc.pausenanfang)"
einen "Type mismatch"- Fehler, wenn ich auf den berechnen Button klicke.
Hab in die Felder sowohl Uhrzeiten (10:00 / 10:00:00) als auch normale Werte (1,2,etc) eingegeben, aber immer der gleiche Fehler.
mfg Lukas
So kompliziert muss man das übrigens gar nicht machen. Datums-/Zeitwerte sind eigentlich nur Zahlen im Double-Format. Zieh Dir folgenden Code mal rein - der kommt völlig ohne NotesDateTime class aus.
HTH,
Bernhard
Function GetTimeDifferenceMin (vStartTime As Variant, vEndTime As Variant) As Double
'==================================================================================================================================
' Purpose: Calculates the time difference between two given Date/Time values (normally the time component only)
'----------------------------------------------------------------------------------------------------------------------------------
' Arguments:
' vStartTime - should be a Date / Time value
' vEndTime - should be a Date / Time value. If vEndTime is 0:00 it will be converted to 24:00 (= 1) !
'----------------------------------------------------------------------------------------------------------------------------------
' Returns: The time difference in minutes if both values are Date/Time values (otherwise 0)
'----------------------------------------------------------------------------------------------------------------------------------
' Created by: Bernhard Koehler on 13.12.2004
'----------------------------------------------------------------------------------------------------------------------------------
' Changes:
'===================================================================================================================================
Dim dblDifference As Double
On Error Goto ErrorRoutine
'The default value:
GetTimeDifferenceMin = 0
'Check for valid Date/Time values:
If Not (Isdate (vStartTime)) Or Not (Isdate (vEndTime)) Then
Exit Function
End If
'Because we can't store 24:00 in Notes we use 0:00 and have to convert this value to 24:00 = 1
If Fraction (vEndTime) = 0 Then
vEndTime = 1
End If
dblDifference = Fraction (vEndTime) - Fraction (vStartTime)
dblDifference = dblDifference * 24 * 60
GetTimeDifferenceMin = Round (dblDifference, 0)
Exit Function
ErrorRoutine:
GetTimeDifferenceMin = 0
Call ErrorHandler ("GetTimeDifferenceMin")
Exit Function
End Function