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

时间:2012-12-28 03:27:10

标签: ms-access access-vba ms-access-2003

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

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

错误:

运行时错误'3075':

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

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

3 个答案:

答案 0 :(得分:7)

根据{{​​1}}(您可以自己制作)的快速Google搜索,

Runtime error 3975Invalid operator

问题是您只需将access vba runtime error 3075的值指定给""。如果第一个stCriteria语句执行,则会为if分配stCriteria的值,该值无效。

如果执行第二个stCriteria 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 )(这里是stCriteria行)执行。您可以通过在发生错误的行上设置断点,运行应用程序直到命中断点,然后检查变量的值来实现。这显示完全变量包含的内容,这可以揭示问题。

答案 1 :(得分:3)

从逻辑上看,似乎你的stLinkCriteria以“和”开头,导致错误:

你可能应该把:

If (Me!txtMainName <> "") Then

    stLinkCriteria1 = "[Main Applicant Name] Like ' " & Me![txtMainName] & "'"

    if stLinkCriteria <> "" then                   <==== add this

       stLinkCriteria = stLinkCriteria & " and "   <==== and this

    end if                                         <==== and this

    stLinkCriteria = stLinkCriteria & stLinkCriteria1  <=== change this

End If    

希望有效 - 否则,逻辑看起来很好。

答案 2 :(得分:0)

我从点和字段名称之间的额外空格中得到此错误:

DoCmd.RunSQL "UPDATE  cp  INNER JOIN [char_lib] ON [cp]. [library_id]  = [char_lib].[id] set..

Microsoft注意:请创建更准确,更有用的错误消息。谢谢。毫无疑问,我对此表示反对。