Stopuhr

Also…*g*
es soll in einem Labelfeld auf einem Formular eine Stoppuhr laufen, wenn dieses Formular öffne soll die stopuhr starten und wenn ich auf einem Button von diesem Formular klicke soll die Stopuhr anhalten. bloss wie mache ich das???
Ich hoffe ihr könnt mir helfen!

lg Maria

Hallo, Maria!

es soll in einem Labelfeld auf einem Formular eine Stoppuhr
laufen, wenn dieses Formular öffne soll die stopuhr starten
und wenn ich auf einem Button von diesem Formular klicke soll
die Stopuhr anhalten. bloss wie mache ich das???
Ich hoffe ihr könnt mir helfen!

Definiere Dir eine Modulvariable, die die Stopuhr darstellt; je nach der gewünschten Darstellung also ggf. eine Date-Variable, die Du beim Aufruf mit der Systemzeit setzt. Das heißt, wenn Du die Stopuhr starten willst (z. B. am Ende von Form_Open), initialisierst Du die mit

Startzeit=Now()

Dargestellt wird dann im Stopuhr-Label immer die Differenz Now()-Startzeit, ggf. entsprechend formatiert. Nun stellt sich die Frage nach der Genauigkeit Deiner Uhr. Du setzt die TimerInterval-Eigenschaft des Formulars (angegeben in ms) entsprechend. Soll die Uhr also sekündlich hochzählen, setze das Intervall auf 1000 (0 deaktiviert den Timer). Im entsprechenden Verzeichnis schreibst Du dann die Ausgabe ins Label. Und damit die Anzeige auch aktualisiert wird, auch wenn ggf. viel gerechnet wird und Access eigentlich gar keine Lust hat, die aktuelle Zeit darzustellen, läßt Du das Formular mit Repaint neu zeichnen:

Sub Form\_Timer()
 LabelStoppuhr.Caption = format$(now()-Startzeit,"hh:mm:ss")
 Me.Repaint
End Sub

Gruß, Manfred

???
Danke für deine schnelle antwort, aber leider funktioniert es nicht so wie ich es gerne hätte…mir wird immer wieder die aktuelle Uhrzeit angezeigt. wollte ja eine Stopuhr…die von null beginnt wenn ich das formular öffne.
Gibt es vielleicht noch andere Lösungen!?

lg Maria

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo, Maria!

Danke für deine schnelle antwort, aber leider funktioniert es
nicht so wie ich es gerne hätte…mir wird immer wieder die
aktuelle Uhrzeit angezeigt. wollte ja eine Stopuhr…die von
null beginnt wenn ich das formular öffne.
Gibt es vielleicht noch andere Lösungen!?

Funktioniert schon.

Schreibe folgendes in den allgemeinen Deklarationsteil Deines Formulars:

Option Compare Database
Option Explicit

Dim mdatStartzeit as Date

Dann schreibst Du ins Load-Ereignis:

Private Sub Form\_Load()
 ... irgendwelche sonstigen Initialisierungen...
 mdatStartzeit = Now()
End Sub

Und dann im Timer-Ereignis:

Private Sub Form\_Timer()
 Me.lblStopuhr.Caption = Format$(Now - mdatStartzeit, "hh:mm:ss") 
End Sub

Du hast demzufolge im Formular ein Label mit Namen lblStopuhr

Bei mir tut’s jedenfalls… Wichtig ist, dass die Startzeit-Variable modulweit gilt und nicht nur lokal in der Timer-Prozedur. Dann wäre sie wohl ohne Initialisierung, demzufolge 0, und deshalb wird Dir die Zeit statt die vergangene Zeit seit Startpunkt angezeigt.

Gruß, Manfred