Access 2010 .SetFocus命令语法出现问题

时间:2018-11-07 13:45:01

标签: ms-access error-handling null syntax-error setfocus

非常困惑: 通过vba从另一个表单中打开一个简单表单后,光标将移至特定字段。 但是,当此字段为Null时,会出现第二次错误2110。每次使用的语法都会更改,如下所示。

更令人困惑的是: 单击“调试”后,该错误被证明是虚构的:在相应的代码行上,只需简单地继续按F5或F8键,该过程就可以正确地以所需的焦点结束。

我找到了一个临时的解决方法,该临时方法不会生成错误消息,但希望尽可能避免使用这种 limping 编码:

'…
Debug.Print Me![MyTextField].Enabled    ' always True
Debug.Print Me.Name     ' always correct form
Me.Repaint
On Error Resume Next
       [MyTextField].SetFocus    ' without Me!
    Me![MyTextField].SetFocus
    ' Forms![MyForm]![MytextField] : same result as with Me!]
    ' one time error with Me! but not without Me!,
    ' next time vice versa, and so forth…
On Error GoTo 0
'…

[MyTextField]不为Null时,两种语法都可以正常工作,而不会产生错误。

.SetFocus命令有什么问题? “修复”数据库无济于事。

2 个答案:

答案 0 :(得分:0)

您不能将焦点设置为具有的控件。这将为您提供一个建立无限循环的非常简单的方法。

您必须先将焦点设置到另一个控件上。

答案 1 :(得分:0)

敏蒂的权利。一个简单的解决方法是在if语句中执行此操作,或者创建一个布尔值以查看IsNull(fieldhere)= true,然后在此处退出sub或您的操作。或者更简单地尝试:

if MyTextField.gotfocus = true then
do something
else
MyTextField.setfocus

我最近以类似的方式遇到了这个问题,不得不创建一个公共布尔函数并在加载事件上对其进行测试。请注意,我是Access的初学者,因此可能有许多更好的方法可以完成此操作:)