我正在尝试创建一个表单,其中两个员工在执行某项任务时会扫描他们的徽章。我想做的是确保两个雇员都扫描他们的徽章,而一个雇员不能扫描他的徽章两次。如果你愿意的话,这是一种激励责任的方法。我有一个条形码的图片,等于“确定”,用户将扫描时,消息框出现(以防万一有问题)。其他一切都很好--当Badge2 = "“时,我无法让焦点返回到"Badge2”。
代码:
Private Sub Badge2_AfterUpdate()
If Me.Badge2.Value = Me.Badge.Value Then
Me.Badge2.Value = ""
MsgBox "You Must Scan Another Employee's Badge to Confirm Result! Scan OK to Scan Another Employee's Badge."
End If
If Me.Badge2.Value = "" Then
Me.Badge2.SetFocus
Else
Me.EID2.Value = DLookup("EID", "EmployeeID", "BADGENUMBER = form.Badge2")
Me.Employee2.Value = DLookup("Name", "EmployeeID", "BADGENUMBER = form.Badge2")
Sleep 2000
End If
End Sub 发布于 2013-12-06 18:08:32
抱歉,HansUp之前的代码混乱。还在努力适应这里的格式。我相信你写的钱是对的,但我只需要把Me.Badge2.Undo函数和Cancel = True函数放在一起,就可以保持对Badge2的关注。谢谢你容忍我的懒散和总是帮忙。
代码:
Private Sub Badge2_BeforeUpdate(Cancel As Integer)
If Me.Badge2.Value = Me.Badge.Value Then
Me.Badge2.Undo
Cancel = True
MsgBox "You Must Scan Another Employee's Badge to Confirm Result! Scan OK to Scan Another Employee's Badge."
Else
Me.EID2.Value = DLookup("EID", "EmployeeID", "BADGENUMBER = form.Badge2")
Me.Employee2.Value = DLookup("Name", "EmployeeID", "BADGENUMBER = form.Badge2")
Sleep 2000
End If
End Sub发布于 2013-12-06 17:25:04
使用Badge2_BeforeUpdate事件而不是Badge2_AfterUpdate。当Badge2.Value不满足您的标准时,Cancel更新和焦点将保留在Badge2上。
这是一个简短的样本。对其进行细化,以添加您需要的其余功能。
Private Sub Badge2_BeforeUpdate(Cancel As Integer)
If Me.Badge2.Value = Me.Badge.Value Or Me.Badge2.Value = "" Then
Cancel = True
End If
End Subhttps://stackoverflow.com/questions/20429664
复制相似问题