Domino 9 und frühere Versionen > ND8: Entwicklung
Feld mit Uhrzeit, automatisch aktualisieren
LukasSChl:
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:
--- Code: ---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
--- Ende Code ---
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
Peter Klett:
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
Ich verstehe nicht, wozu Du den blauen Teil benötigst. Da der Timer elapsedTime jede Sekunde um eins hochzählt, ist die Minute um, wenn elapsedTime 60 ist, dann setzt Du den wieder auf 0 und es beginnt von vorn.
Peter Klett:
Wenn Du mit dem Debugger den TimerHandler nicht debuggen kannst, ruf ihn temporär über eine Schaltfläche auf und debug damit
LukasSChl:
--- Zitat von: Peter Klett am 28.04.10 - 12:22:07 ---Wenn Du mit dem Debugger den TimerHandler nicht debuggen kannst, ruf ihn temporär über eine Schaltfläche auf und debug damit
--- Ende Zitat ---
Das is ne gute Idee, dank dir, werd ich ma testen.
Gründe warum ich die zusätzlichen Abfragen hab:
- Trigger, verhindert automatische Berechnung, falls User grad in einem Feld einen Wert ändert -> Berechnung wäre dann fehlerhaft
- Deswegen die Abfrage nach dem Zeitunterschied, da wenn ich den Timer Stoppe die Zeit ja weiterläuft obwohl der Timer, nach erneutem Starten nur bei z.b. 30 ist.
PS. Eben pause, max 40min
mfg Lukas
Peter Klett:
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?
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln