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.
Ich bin neugierig, was ist der Zweck des Verfolgen der Zeit, die Ihre Benutzer braucht, um jeden neuen Datensatz einzufügen? – HansUp
@HansUp - Latenz? – Gutzofter
Möchten Sie die Timer-Auflösung in Sekunden, Millisekunden, Mikrosekunden, Picosekunden? – Gutzofter