0

我有 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”并指向 Else 条件。

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

提前致谢。

4

1 回答 1

1

一个空的文本框保存 Null 的值,因此将其与 + 连接会导致 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
于 2015-02-28T16:10:14.047 回答