首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Microsoft Access VBA -运行时错误'3075‘

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

Stack Overflow用户
提问于 2012-12-28 11:27:10
回答 3查看 54.7K关注 0票数 6

我遇到了运行时错误'3075‘。我是VBA的新手!>.<我能知道哪里出了问题吗?我解决不了这个问题。

例如,如果我在一个文本框(txtMainName)中输入了一个名字"Sally“,点击搜索按钮时会弹出错误。

错误:

运行时错误'3075':

查询表达式中的语法错误(缺少运算符)和主申请人姓名,如'Sally'“。

代码语言:javascript
运行
复制
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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-28 11:45:57

根据谷歌在access vba runtime error 3075上的快速搜索,Runtime error 3975Invalid operator (你也可以自己做)。

问题是您只向stCriteria赋值为""。如果执行第一个if语句,则会将stCriteria AND stCriteria1的值赋给stCriteria,该值无效。

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

解决方案是修改您的代码,以便仅在需要时添加AND

代码语言:javascript
运行
复制
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

为了便于将来参考,解决这类问题的方法是在导致错误的行(这里是DoCmd.OpenForm行)执行之前实际检查变量(在本例中为stCriteria)的值。为此,您可以在发生错误的行上设置断点,运行应用程序直到命中断点,然后检查变量的值。这将准确地显示变量包含的内容,从而揭示问题所在。

票数 7
EN

Stack Overflow用户

发布于 2012-12-28 12:02:28

从逻辑上看,您的stLinkCriteria似乎是以"and“开头的,这是导致错误的原因:

你可能应该把:

代码语言:javascript
运行
复制
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    

希望这是可行的-否则,逻辑看起来很好。

票数 3
EN

Stack Overflow用户

发布于 2014-12-26 04:31:49

我得到这个错误是因为一个点和字段名之间有一个额外的空格:

代码语言:javascript
运行
复制
DoCmd.RunSQL "UPDATE  cp  INNER JOIN [char_lib] ON [cp]. [library_id]  = [char_lib].[id] set..

Microsoft注意:请创建更精确、更有用的错误消息。谢谢。我毫不怀疑你会处理好这件事的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14064203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档