VBA如果文本框为空,则显示所有值

时间:2015-02-28 12:34:11

标签: vba ms-access string ms-query

我有2个文本框和一个按钮。该按钮打开一个包含文本框值的查询。一切正常,除非一个文本框为空,然后我想找到该文本框中的所有记录(到目前为止,我已经在textbox2上测试了它)。这是我的代码:

Private Sub vbaBtn_Click()

Dim af1 As String, af2 As String
 af1 = "([a1]='" + [krit1] + "') "

If krit2 = "" Then
 af2 = "([a2]='" + "*" + "') "
Else
 af2 = "([a2]='" + [krit2] + "') "
End If

DoCmd.OpenForm "FormLisategevusalad", acFormDS, , af1 & " " & "And" & " " & af2

End Sub

在我看来,VBA总是选择Else选项而不是If,因为当我调试时它说错误是"无效使用null"并指出了其他条件。

我使用错误的方法来检测并清空字符串吗?如果我将空字符串识别工作,这af2 = "([a2]='" + "*" + "') "是否是返回所有记录的正确方法?

提前致谢。

1 个答案:

答案 0 :(得分:1)

空文本框保存Null值,因此将其与+结果为空。使用&:

Private Sub vbaBtn_Click()

    Dim af1 As String, af2 As String

    af1 = "([a1]='" & [krit1] & "') "

    If IsNull([krit2]) Then
        af2 = "([a2] Is Not Null) "
    Else
        af2 = "([a2]='" & [krit2] & "') "
    End If

    DoCmd.OpenForm "FormLisategevusalad", acFormDS, ,af1 & " And " & af2

End Sub