Ok ich versuchs ma^^
Global Declarations:
Dim elapsedTime As Integer
Dim elapsedTimer As NotesTimer
%INCLUDE "lsconst.lss"
Postopen:
Sub Postopen(Source As Notesuidocument)
Set elapsedTimer = New NotesTimer(1, "test")
elapsedTime = 0
On Event Alarm From elapsedTimer _
Call elapsedTimerHandler
End Sub
Was bitte macht: "On Event Alarm From elapsedTimer _
Call elapsedTimerHandler" ??
Jedes mal wenn der Timer auf 0 ist, ruft er die untere Sub neu auf?
Das muss auch irgendwo hin, aber ich weiß nicht wo, man kann ja keine eigenen Subs anlegen irgendwie, zumindet weiß ich net wie^^
Sub elapsedTimerHandler(Source As NotesTimer)
elapsedTime = elapsedTime + 1
End Sub
On Event Alarm From elapsedTimer _
Call elapsedTimerHandler"
Was passiert hier? Ich kann mir das net so ganz erschließen.
Bei elapsedTime = 0 ruft der die "elapsedTimerHandler"-Sub auf, die dann beginnt die Variable jede Sekunde um 1 zu erhöhen oder?
Jetzt muss es nurnoch so sein, dass alle 60 Sekunden der Inhalt der 2 betroffenen Felder neu berechnet wird.
z.B. so: Sub elapsedTimerHandler(Source As NotesTimer)
elapsedTime = elapsedTime + 1,
If elapsedTime = 60 then
'Code
elapsedTime = 0
End if
End Sub
mfg Lukas
Also ich bekomme jetzt eine Error-Meldung:
"Falscher Datentyp in Methode RunStkCoerceVal: Unknown wurde gefunden, Unknown wurde erwartet."
Hier mal der Code des elapsedTimerHandler's:
Sub elapsedTimerHandler(Source As NotesTimer)
Dim oWorkspace As New NotesUIWorkspace
Dim oUIDoc As NotesUIDocument
Set oUIDoc = oWorkspace.CurrentDocument
Dim oDoc As Notesdocument
Set oDoc = oUIDoc.Document
Dim Arbeitszeit As Double
Dim Arbeitszeit_Stunden As String
Dim Arbeitszeit_Minuten As String
Dim Aktuelle_Zeit As New NotesDateTime( "" )
Dim Aktuelle_Zeit_dbl As Double
Dim Aktuelle_Zeit_dbl_Stunden As Double
Dim Aktuelle_Zeit_dbl_Minuten As Double
Dim Arbeitsbeginn As New NotesDateTime( "" )
Dim Überstunden_Min As String
Dim Überstunden_Std As String
Dim Gehen_um_Min As String
Dim Gehen_um_Std As String
Dim Soll As Double
Dim TimeToGo_Min As String
Dim TimeToGo_Std As String
Dim Pausen_Soll As Double
Dim Pause As Variant
Dim Restpause_Min As Double
Dim Restpause_Std As Double
Dim reine_Arbeitszeit As Double
elapsedTime = elapsedTime + 1
Aktuelle_Zeit.LSLocalTime = Now
If (Aktuelle_Zeit.TimeDifference(oDoc.Time)) >= 60 Then
If Trigger = 1 Then
If elapsedTime = 60 Then
'Felder neu berechnet
End If
End If
End If
End Sub
Die Fehlermeldung taucht auf, sobald ich das Dokument aufrufe.
Weggklicken kann man den Fehler, aber der kommt immer wieder.
EDIT:
Ich habe den Wert des Feldes oDoc.Time vorher in eine Variable gesteckt
und damit den TimeDifference befehl "gefüttert"
leider behebt das das Problem nicht:
Dim oTime As New NotesDateTime( oDoc.Time )
If (Aktuelle_Zeit.TimeDifference(oTime)) >= 60 Then
Dummerweise kann man mit dem Debugger auch nicht schauen wo genau der Fehler produziert wird...... ;( xD
mfg Lukas
dann kann es aber passieren, dass elapsedTime größer als 60 wird und dann nie die Aktualisierung aufgerufen wird. Wäre es nicht einfacher, bei Eintreffen des "UserBearbeitet"-Ereignisses elapsedTime auf 0 zu setzen und nur eine Bedingung (elapsedTime = 60) zu prüfen?
Wenn ich es so mache:
Aktuelle_Zeit.LSLocalTime = Now
If (Aktuelle_Zeit.TimeDifference(oDoc.Time)) >= 60 Then
If Trigger = 1 Then
'Felder werden neu berechnet
End If
End If
dann aktualisiert er nur, wenn wirklich mind. 1 Minute rum ist und der Trigger grünes licht für die Berechnung gibt.
Es läuft jetzt auch alles so wie ich mir das gedacht habe.
Vielen Dank für die Hilfe.
mfg Lukas