2012-04-09 20 views
2

Weiß jemand, ob es eine Möglichkeit gibt, eine Stoppuhr in MS Access zu erstellen? Ich suche nach einer Möglichkeit, eine Stoppuhr zu starten, wenn jemand auf einen neuen Datensatz für ein bestimmtes Formular klickt und die Stoppuhr an dem Punkt endet, an dem die Person die im Formular eingegebenen Informationen speichert. Im Idealfall hätte ich für jeden Datensatz in der Tabelle eine zusätzliche Spalte, die die Zeit anzeigt, die zum Erstellen des Formulars benötigt wurde.Erstellen einer Stoppuhr in MS Access

Irgendwelche Vorschläge/Ideen?

+0

Ich bin neugierig, was ist der Zweck des Verfolgen der Zeit, die Ihre Benutzer braucht, um jeden neuen Datensatz einzufügen? – HansUp

+0

@HansUp - Latenz? – Gutzofter

+0

Möchten Sie die Timer-Auflösung in Sekunden, Millisekunden, Mikrosekunden, Picosekunden? – Gutzofter

Antwort

2

Versuchen this Sie die onClick einstellen könnte auf „neu“ und Sie können in einem einfachen setzen if-Anweisung, damit es auf die Aktion speichern

2

stoppen Wenn Sie die neue Schaltfläche klicken, wird der On Current-Ereignis des Formulars wird schießen. Sie können unterscheiden, ob der aktuelle Datensatz ein neuer oder vorhandener Datensatz ist, indem Sie die Eigenschaft NewRecord des Formulars untersuchen.

Ich habe ein Long Integer-Feld mit dem Namen seconds_for_insert zu meiner Tabelle hinzugefügt. Dann habe ich ein Formular erstellt, dessen Datensatzquelle eine Abfrage basierend auf dieser Tabelle ist. Das Formular enthält einen Textfeldnamen txtSeconds_for_insert, der an das Feld seconds_for_insert der Datensatzquelle gebunden ist. Hier ist meine Form Code:

Option Compare Database 
Option Explicit 
Dim blnNewRecord As Boolean 
Dim dteStartTime As Date 

Private Sub Form_BeforeInsert(Cancel As Integer) 
    Me.txtSeconds_for_insert = DateDiff("s", dteStartTime, Now()) 
End Sub 

Private Sub Form_Current() 
    blnNewRecord = Me.NewRecord 
    If blnNewRecord Then 
     dteStartTime = Now() 
    End If 
End Sub 

Wenn Ihre Quelltabelle ein Autowert-Feld enthält, wird Access den neuen Datensatz speichern, sobald Sie etwas in einer der gebundenen Kontrollen geben. Alle verbleibenden Daten, die Sie zu diesem "neuen" Datensatz hinzufügen, werden mit einem Update anstelle eines Einfügevorgangs gespeichert. Verwenden Sie in diesem Fall Form_BeforeUpdate statt Form_BeforeInsert.

Private Sub Form_BeforeUpdate(Cancel As Integer) 
    If blnNewRecord Then 
     Me.txtSeconds_for_insert = DateDiff("s", dteStartTime, Now()) 
    End If 
End Sub 

Der txtSeconds_for_insert Textfeld muss nicht aktiviert werden oder auch sichtbar für diese zu arbeiten. Möglicherweise möchten Sie "Sichtbar = Nein" festlegen, um die Benutzer nicht abzulenken, oder wenn Sie nicht möchten, dass sie wissen, dass Sie diese Informationen verfolgen.