Autor Thema: Feld mit Uhrzeit, automatisch aktualisieren  (Gelesen 11392 mal)

Offline LukasSChl

  • Junior Mitglied
  • **
  • Beiträge: 68
  • Geschlecht: Männlich
Feld mit Uhrzeit, automatisch aktualisieren
« am: 28.04.10 - 08:46:40 »
Moin

Ich hab eine Maske mit ein Paar Feldern, in denen Werte angezeigt werden.
Beim Klick auf einen Button werden die Werte berechnet und in die Felder eingetragen.

Die Berechnungen für die Felder sollen automatisch aktualisiert werden.
(Es werden Uhrzeiten angezeigt und die sollen halt immer genau sein^^)

Wie bekomm ich das hin, das der Code im Button automatisch ausgeführt wird, bzw. macht das über diesen Weg Sinn?

Mir fällt spontan ne Schleife ein, wo der Button Code einfach ständig durchläuft aber is bestimmt keine gute Lösung.

EDIT: Der Button-Code berechnet 4 Felder, jedoch müssen nur 2 Felder von der Zeit her aktuell gehalten werden, die anderen Zeiten ändern sich nicht.

mfg Lukas

ps: heute an dem Platz habe ich Notes 8 / Designer 8
« Letzte Änderung: 28.04.10 - 08:53:11 von LukasSChl »
Informatikkaufmann-Azubi (3tes Lehrjahr)
Lotus Notes Server: 8 * 8.0.2
Lotus Notes Clients: ca. 1800 * 8.0.2
Dienstags außer Haus

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Feld mit Uhrzeit, automatisch aktualisieren
« Antwort #1 am: 28.04.10 - 08:59:07 »
Verstehe ich richtig, dass Du Felder in einem geöffneten Dokument permanent automatisch aktualisieren willst?

Ich würd's lassen

Offline LukasSChl

  • Junior Mitglied
  • **
  • Beiträge: 68
  • Geschlecht: Männlich
Re: Feld mit Uhrzeit, automatisch aktualisieren
« Antwort #2 am: 28.04.10 - 09:00:27 »
Ja so in etwa wollt ich das haben^^, nur das es kein geöffnetes Dokument ist, sondern eine Maske.

Einfach so das in dem Feld, welches berechnet, wielange man schon im Büro sitzt, immer die aktuelle Arbeitszeit steht.

mfg Lukas
« Letzte Änderung: 28.04.10 - 09:02:23 von LukasSChl »
Informatikkaufmann-Azubi (3tes Lehrjahr)
Lotus Notes Server: 8 * 8.0.2
Lotus Notes Clients: ca. 1800 * 8.0.2
Dienstags außer Haus

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Feld mit Uhrzeit, automatisch aktualisieren
« Antwort #3 am: 28.04.10 - 09:12:50 »
Tja, eine nette Idee, aber dann wirst Du wirklich nur noch im Büro sitzen. Arbeitszeit kann man das dann wohl nicht mehr nennen, wenn der Rechner permanent blockiert ist  :)

Mit einem Java-Applet ließe sich das vielleicht sogar einigermaßen gut darstellen. Aber da kann ich Dir nicht wirklich helfen.

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Feld mit Uhrzeit, automatisch aktualisieren
« Antwort #4 am: 28.04.10 - 09:19:04 »
Hallo,

Ich frage mich auch, warum denn eine permanente Aktualisierung erforderlich ist.

Ein Feld mit Datum Begin, 1 Feld mit Zeit Begin, 1 Feld mit Datum Ende, 1 Feld mit Zeit Ende, 1 Feld mit Pausenzeit (in min), 1 berechnetes Feld mit der Differenz zwischen den einzelnen Werten.

Die Berechnung kann beim Speichern des Dokumentes erfolgen, sofern alle notwendigen Werte eingetragen wurden.

Andreas

P.S.:
Ein Dokument ist mit einer Maske erstellt. (Maske ist das Design, ein Dokument sind die Daten, die eingegeben wurden)

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline LukasSChl

  • Junior Mitglied
  • **
  • Beiträge: 68
  • Geschlecht: Männlich
Re: Feld mit Uhrzeit, automatisch aktualisieren
« Antwort #6 am: 28.04.10 - 09:25:00 »
Ein Countdown wäre wohl besser
Kann hier leider keine andere Software runterladen / installieren / nutzen, deswegen bastel ich an einer Notes-Lösung.

Hallo,

Ich frage mich auch, warum denn eine permanente Aktualisierung erforderlich ist.

Ein Feld mit Datum Begin, 1 Feld mit Zeit Begin, 1 Feld mit Datum Ende, 1 Feld mit Zeit Ende, 1 Feld mit Pausenzeit (in min), 1 berechnetes Feld mit der Differenz zwischen den einzelnen Werten.

Die Berechnung kann beim Speichern des Dokumentes erfolgen, sofern alle notwendigen Werte eingetragen wurden.

Andreas

P.S.:
Ein Dokument ist mit einer Maske erstellt. (Maske ist das Design, ein Dokument sind die Daten, die eingegeben wurden)


Das Dokument soll garnicht gespeichert werden, man hat einfach nur die Maske offen, in der die Arbeitszeit, Überstunden, Zeit zu der man gehen kann (bei Soll-Arbeitszeit) berechnet wird.
Nur zur "Selbstkontrolle" oder wie man das nennen soll^^


Ok ich hab ma ne theoretische Überlegung:

1. Ich nehm den Code aus dem Button und pack den direkt in die Felder.
2. Beim Öffnen sollen die aber noch nicht berechnet werden.

3. Mit Klick auf den Button arbeitet der die Felder mit den Einzelberechnungen ab.
4. Die 2 Felder die ständig aktuell gehalten werden sollen -> "Felder automatisch aktualisieren" Funktion

Ist das möglich??

mfg Lukas
Informatikkaufmann-Azubi (3tes Lehrjahr)
Lotus Notes Server: 8 * 8.0.2
Lotus Notes Clients: ca. 1800 * 8.0.2
Dienstags außer Haus

Offline joringel

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Geschlecht: Männlich
Re: Feld mit Uhrzeit, automatisch aktualisieren
« Antwort #7 am: 28.04.10 - 09:32:16 »
Ich denke, die Anforderungen aus dem ersten Posting sollten sich mit der Klasse 'Notestimer' bewerkstelligen lassen.

Gruß
Peter
Nenne nie einen Server 'Lokal'...

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Feld mit Uhrzeit, automatisch aktualisieren
« Antwort #8 am: 28.04.10 - 09:39:06 »
Der Notestimer stoppt aber, wenn das Dokument verlassen wird (oder ein anderes Dokument geöffnet wird), zumindest war das in älteren Versionen so (Notes 5?, hab's danach nicht wieder probiert). Dann kann Notes nur dieses Dokument anzeigen (Wie Andreas schon geschrieben hat, man kann keine Maske anzeigen, nur Dokumente, und die sehen dann so aus, wie es in der Maske definiert ist). Wenn die einzige Aufgabe des Rechners ist, anzuzeigen, wann man endlich gehen darf, kann man das wohl mal versuchen ...

Offline LukasSChl

  • Junior Mitglied
  • **
  • Beiträge: 68
  • Geschlecht: Männlich
Re: Feld mit Uhrzeit, automatisch aktualisieren
« Antwort #9 am: 28.04.10 - 09:48:37 »
Der Notestimer stoppt aber, wenn das Dokument verlassen wird (oder ein anderes Dokument geöffnet wird), zumindest war das in älteren Versionen so (Notes 5?, hab's danach nicht wieder probiert). Dann kann Notes nur dieses Dokument anzeigen (Wie Andreas schon geschrieben hat, man kann keine Maske anzeigen, nur Dokumente, und die sehen dann so aus, wie es in der Maske definiert ist). Wenn die einzige Aufgabe des Rechners ist, anzuzeigen, wann man endlich gehen darf, kann man das wohl mal versuchen ...

Da das Dokument ja nicht geschlossen wird (außer man beendet die Anwendung) spielt das hier ja keine Rolle.

Neben der "Sie können dann und dann gehen"-Zeit, wird noch die Restzeit, die Arbeitszeit und ne %-Angabe angezeigt/berechnet.


mfg Lukas
Informatikkaufmann-Azubi (3tes Lehrjahr)
Lotus Notes Server: 8 * 8.0.2
Lotus Notes Clients: ca. 1800 * 8.0.2
Dienstags außer Haus

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Feld mit Uhrzeit, automatisch aktualisieren
« Antwort #10 am: 28.04.10 - 09:59:07 »
Über den Sinn der Aktion brauchen wir hier nicht zu diskutieren, intererssant ist m.E. nur die Technik. Man könnte das ja auch für ganz andere Zwecke verwenden.

Meines Wissens beendet sich der NotesTimer in dem Augenblick, in dem das Dokument, in dem der läuft, nicht mehr im Vordergrund ist (also Dokument bleibt geöffnet, aber ein anderes wird zusätzlich geöffnet). Das Problem kann inzwischen ja behoben sein. In der Designer-Hilfe ist der NotesTimer (wenn ich mich recht erinnere) ganz gut beschrieben. Probiers aus, bin gespannt auf Dein Ergebnis.

Offline LukasSChl

  • Junior Mitglied
  • **
  • Beiträge: 68
  • Geschlecht: Männlich
Re: Feld mit Uhrzeit, automatisch aktualisieren
« Antwort #11 am: 28.04.10 - 10:17:47 »
Ok ich versuchs ma^^

Global Declarations:
Code
Dim elapsedTime As Integer
Dim elapsedTimer As NotesTimer
%INCLUDE "lsconst.lss"

Postopen:
Code
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^^
Code
Sub elapsedTimerHandler(Source As NotesTimer)
  elapsedTime = elapsedTime + 1
End Sub
Informatikkaufmann-Azubi (3tes Lehrjahr)
Lotus Notes Server: 8 * 8.0.2
Lotus Notes Clients: ca. 1800 * 8.0.2
Dienstags außer Haus

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Feld mit Uhrzeit, automatisch aktualisieren
« Antwort #12 am: 28.04.10 - 10:37:01 »
Du kannst eigene Sub's und Function's erstellen, indem Du Sie unterhalb einer bestehenden Sub oder Function schreibst, z.B. unterhalb End Sub der Sub Initialize (Sub MeineSub + Enter - fertig).

In die elapsedTimerHandler muss dann die Aktualisierungsroutine eingebaut werden

Offline LukasSChl

  • Junior Mitglied
  • **
  • Beiträge: 68
  • Geschlecht: Männlich
Re: Feld mit Uhrzeit, automatisch aktualisieren
« Antwort #13 am: 28.04.10 - 10:45:51 »
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:
Code
Sub elapsedTimerHandler(Source As NotesTimer)
  elapsedTime = elapsedTime + 1,
  If elapsedTime = 60 then
  'Code
  elapsedTime = 0
  End if
End Sub

mfg Lukas
Informatikkaufmann-Azubi (3tes Lehrjahr)
Lotus Notes Server: 8 * 8.0.2
Lotus Notes Clients: ca. 1800 * 8.0.2
Dienstags außer Haus

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Feld mit Uhrzeit, automatisch aktualisieren
« Antwort #14 am: 28.04.10 - 10:57:46 »
ja

Offline LukasSChl

  • Junior Mitglied
  • **
  • Beiträge: 68
  • Geschlecht: Männlich
Re: Feld mit Uhrzeit, automatisch aktualisieren
« Antwort #15 am: 28.04.10 - 12:00:10 »
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

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
« Letzte Änderung: 28.04.10 - 12:14:06 von LukasSChl »
Informatikkaufmann-Azubi (3tes Lehrjahr)
Lotus Notes Server: 8 * 8.0.2
Lotus Notes Clients: ca. 1800 * 8.0.2
Dienstags außer Haus

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Feld mit Uhrzeit, automatisch aktualisieren
« Antwort #16 am: 28.04.10 - 12:18:43 »
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.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Feld mit Uhrzeit, automatisch aktualisieren
« Antwort #17 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

Offline LukasSChl

  • Junior Mitglied
  • **
  • Beiträge: 68
  • Geschlecht: Männlich
Re: Feld mit Uhrzeit, automatisch aktualisieren
« Antwort #18 am: 28.04.10 - 12:31:29 »
Wenn Du mit dem Debugger den TimerHandler nicht debuggen kannst, ruf ihn temporär über eine Schaltfläche auf und debug damit

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
Informatikkaufmann-Azubi (3tes Lehrjahr)
Lotus Notes Server: 8 * 8.0.2
Lotus Notes Clients: ca. 1800 * 8.0.2
Dienstags außer Haus

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Feld mit Uhrzeit, automatisch aktualisieren
« Antwort #19 am: 28.04.10 - 12:48:50 »
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?

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz