访问VBA:如果表单值<> NULL然后运行查询else,结束if。 - 什么都不做

时间:2010-09-20 11:58:09

标签: ms-access vba if-statement

我有一段代码,我已经随意编写,以便运行查询on_click表单按钮。

Private Sub Command153_Click()
If Forms![form name1]![form name2]!Text143 <> Null Then
DoCmd.OpenQuery "InsertGroup", acNormal, acEdit
Else
End If
End Sub

如果之前在VBA中我没有编写自定义,所以我认为我可能只是错了,因为它实际上没有做任何事情(没有错误或任何事情,我认为它只是没有运行查询)。我知道我正在调用的查询工作正常,好像我只是让on_click运行查询而没有if,我没有任何问题。 我也引用了正确的文本框,并在文本框中使用和不使用测试数据进行了尝试。

非常感谢任何帮助!

此致

安迪。

3 个答案:

答案 0 :(得分:2)

通常的说法是:

 If IsNull(Forms![form name1]![form name2]!Text143) Then

我不相信可以在Access控件中获取空字符串,除非该值来自允许零长度字符串的数据库。此外,如果您正在测试零长度字符串,您可以覆盖所有基础并测试空间填充字符串,因此在某些情况下您可能会看到:

 If Trim(Forms![form name1]![form name2]!Text143 & vbNullString ) = vbNullString Then

答案 1 :(得分:1)

您通常会覆盖null和空字符串。文本框可能有一个值,而不是null,如果断点代码来检查值,您将会看到

If Nz(Forms![form name1]![form name2]!Text143,"") <> "" Then ...

答案 2 :(得分:1)

上面的答案看起来很好而且正确但是值得明确注意到你在第一段代码中写的与null的比较:

If Forms![form name1]![form name2]!Text143 <> Null Then....

总是会失败/被评估为false,即使您的表单名称为null,因为Null没有可比较的值。如果您想知道某些内容是否为空,则必须使用IsNull(value)Not Isnull(value)

作为替代方法或覆盖更多基础,您可以使用nz(VariableName),如果"",则返回零长度字符串vbNullString(也与VariableName相同)一片空白。通过这种方式组合,您可以在单个操作中检查零长度字符串和空值:

If nz(VariableName) = vbNullString then
    Debug.Print "The variable is Null or Zero-length"
End If