2

有谁知道是否有办法在 MS Access 中创建秒表?我正在寻找一种方法来让秒表在某人单击特定表单的“新”记录时“开始”,并在该人保存在表单中输入的信息时让秒表“结束”?理想情况下,对于表中的每条记录,我希望有一个额外的列显示创建表单所花费的时间。

有什么建议/想法吗?

4

2 回答 2

2

当您单击按钮时,On Current将触发表单的事件。NewRecord您可以通过检查表单的属性来区分当前记录是新记录还是现有记录。

我在表中添加了一个名为 Long Integer 的字段seconds_for_insert。然后我创建了一个表单,其记录源是基于该表的查询。txtSeconds_for_insert该表单包括一个绑定到记录源seconds_for_insert字段的文本框名称。这是我的表单代码:

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

如果您的源表包含自动编号字段,只要您在其中一个绑定控件中键入任何内容,Access 就会保存新记录。您添加到该“新”记录的任何剩余数据都将通过更新而不是插入操作进行保存。所以在这种情况下,使用Form_BeforeUpdate代替Form_BeforeInsert.

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

txtSeconds_for_insert文本框不必启用或什至可见即可。您可能更喜欢设置 Visible = No 以避免分散用户的注意力,或者如果您不想让他们知道您正在跟踪该信息。

于 2012-04-09T18:29:17.287 回答
2

试试这个您可以将 onClick 设置为“new”,您可以放入一个简单的 if 语句以允许它在保存操作时停止

于 2012-04-09T15:02:25.417 回答