Microsoft Access VBA - 运行时错误'3075'

Gue*_*Who 5 ms-access access-vba ms-access-2003

我遇到了运行时错误'3075'.我是VBA的新手!>.<我能知道它出了什么问题吗?我解决不了...

例如,如果我在文本框(txtMainName)中输入名称"Sally",则在单击搜索按钮时会弹出错误.

错误:

运行时错误'3075':

查询表达式中的语法错误(缺少运算符)'和[主申请人名称]类似'莎莉'".

Public Sub Search_Record()

Dim stDocName As String
Dim stLinkCriteria As String
Dim stLinkCriteria1 As String
Dim stLinkCriteria2 As String


    stLinkCriteria = ""
    stDocName = "frmDisplayInfo"

    If (Me!txtMainName <> "") Then
        stLinkCriteria1 = "[Main Applicant Name] Like ' " & Me![txtMainName] & "'"
        stLinkCriteria = stLinkCriteria & " And " & stLinkCriteria1
    End If

    If (Me!txtIDNo <> "") Then
        stLinkCriteria2 = "[ID No] Like ' " & Me![txtIDNo] & "'"
        stLinkCriteria = stLinkCriteria & " And " & stLinkCriteria2
    End If

    '(*This part is highlighted*)
    DoCmd.OpenForm stDocName, , , stLinkCriteria
    DoCmd.Maximize

End Sub
Run Code Online (Sandbox Code Playgroud)

Ken*_*ite 7

Runtime error 3975Invalid operator,根据上一个快速谷歌搜索access vba runtime error 3075(你可能做你自己).

问题是,你只能分配一个值""stCriteria.如果第一个if语句执行,stCriteriastCriteria AND stCriteria1为其分配值,该值无效.

如果执行第二个if语句,则会发生同样的事情.(事实上​​,如果两者都实际运行,stCriteria现在包含AND stCriteria1 AND stCriteria2,这更糟糕.)

解决方案是修改您的代码,只在AND需要时添加:

stLinkCriteria = ""
stDocName = "frmDisplayInfo"

If (Me!txtMainName <> "") Then
    stLinkCriteria = "[Main Applicant Name] Like ' " & Me![txtMainName] & "'"
End If

If (Me!txtIDNo <> "") Then
    If stLinkCriteria <> "" then
        stLinkCriteria = stLinkCriteria & " AND "
    End If
    stLinkCriteria2 = "[ID No] Like ' " & Me![txtIDNo] & "'"
    stLinkCriteria = stLinkCriteria & " And " & stLinkCriteria2
End If
Run Code Online (Sandbox Code Playgroud)

为了将来参考,解决这类问题的方法是在stCriteria导致错误的行(这里,它是DoCmd.OpenForm行)之前实际检查变量的值(在这种情况下).您可以通过在发生错误的行上设置断点,运行应用程序直到命中断点,然后检查变量的值来实现.这显示了变量包含的确切内容,可以揭示问题.

  • 非常感谢!它有效,但我认为你错过了'结束如果'.解释清楚,我现在可以理解出了什么问题. (2认同)