我是使用MS Access 2016的初学者。 我在表单上有一个保存按钮,它执行最后一分钟的输入验证,这对于最终用户来说是非常直接和有用的。当我们点击保存按钮时,我正在使用一系列文本框来逐步完成验证,这样他们就可以完成整个表单,如果出现错误,则会直接将错误带到该字段。
我的代码似乎有效, 它检测到错误, 将焦点设置为text179, 看到JobNo字段中有错误, 给出一条消息“请输入一个5位数的工号”和 将焦点设置为JobNo。 然后,只有这样,我得到第二个提示,说有错误。 但是为什么它说它不能把重点放在text179上,当它显然已经这样做了,而且应该不再尝试那个时候了?
这是我的代码:
Private Sub SaveRecord_GotFocus()
If Me.JobNo & "" Like "#####" And Me.ItemNo & "" <> "" Then
Exit Sub
Else
Me.Text179.SetFocus
End If
End Sub
Private Sub Text179_GotFocus()
If Me.JobNo & "" Like "#####" Then
Me.Text181.SetFocus
Exit Sub
Else
MsgBox "Please enter a 5 digit Job Number", vbOKOnly
Cancel = True
Me.JobNo.SetFocus
Exit Sub
End If
End Sub
错误: 运行时错误'2110': Microsoft Access无法将焦点移动到控件Text179。
如果需要任何其他信息,请与我们联系。
答案 0 :(得分:0)
我能够使用更简洁的方法解决这个问题,只使用VB代码而不尝试使用setfocus。我花了一些时间来弄清楚如何正确地嵌套我的if语句,因为我是Access / VB的新手。我将在下面发布代码。
Private Sub SaveRecord_GotFocus()
If Me.JobNo & "" Like "#####" Then
GoTo Eval_ItemNo
Else
MsgBox "Please enter a 5 digit Job Number", vbOKOnly
Me.JobNo.SetFocus
Exit Sub
End If
Eval_ItemNo:
If Me.ItemNo & "" <> "" Then
GoTo Eval_QtyFinished
Else
MsgBox "Please enter an Item Number", vbOKOnly
Me.ItemNo.SetFocus
Exit Sub
End If
Eval_QtyFinished:
If Me.QtyFinished & "" <> "" Then
GoTo Eval_WorkCenter
Else
MsgBox "Please enter a Qty Finished", vbOKOnly
Me.QtyFinished.SetFocus
Exit Sub
End If
Eval_WorkCenter:
If Me.WorkCenter & "" <> "" Then
Exit Sub
Else
MsgBox "Please enter a WorkCenter", vbOKOnly
Me.WorkCenter.SetFocus
End If
End Sub