我有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]='" + "*" + "') "
是否是返回所有记录的正确方法?
提前致谢。
答案 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