【发布时间】:2020-02-28 03:17:24
【问题描述】:
我有 MS Access 2003 数据库。
表单上的按钮的事件处理程序是否可以触发两次??
我似乎有证据表明这种情况正在发生,因为我有一个工资核算流程 记录整个过程并且过程在日志中重复。
我认为这在 VBA 中是不可能的???
编辑: 我发现它确实触发了两次,因为用户单击了两次并将事件排队两次。 这是我对代码所做的修复,它显示使用标志 m_locked 作为测试示例:
[代码]
Private m_locked As Boolean
Private m_count As Integer
Private Sub Command0_Click()
On Error GoTo Err_Command0_Click
' wait
If Not m_locked Then
m_locked = True
Dim startTime As Date
startTime = Now()
While DateDiff("s", startTime, Now()) < 3
DoEvents
Wend
' increment counter
m_count = m_count + 1
Command0.Caption = m_count
m_locked = False
End If
Exit_Command0_Click:
Exit Sub
Err_Command0_Click:
MsgBox Err.Description
Resume Exit_Command0_Click
End Sub
[/代码]
马尔科姆
【问题讨论】:
-
哪个事件?请张贴代码。你可能想在问号上放轻松,有些人读过普拉切特。
-
“我似乎有证据证明这件事发生了” 你愿意与我们分享这些证据并向我们展示你的代码吗?这不是通灵者论坛。
-
我认为很明显它是 CLick 事件。不值得发布与问题无关的整个代码的代码。我问的事件 Public Sub cmdCalculatePay_Click() 可以一键触发两次还是明显一键触发?
标签: vba ms-access-2003