Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access Microsoft Access VBA-运行时错误';3075';_Ms Access_Vba_Ms Access 2003 - Fatal编程技术网

Ms access Microsoft Access VBA-运行时错误';3075';

Ms access Microsoft Access VBA-运行时错误';3075';,ms-access,vba,ms-access-2003,Ms Access,Vba,Ms Access 2003,我遇到了运行时错误“3075”。我是VBA的新手!>我能知道哪里出了问题吗?我解决不了 例如,如果我在一个文本框(txtMainName)中输入一个名字“Sally”,点击搜索按钮就会弹出错误 错误: 运行时错误“3075”: 查询表达式“”和[主要申请人名称]中的语法错误(缺少运算符),如“Sally” 公共子搜索_记录() 将stDocName设置为字符串 将标准设置为字符串 作为字符串的Dim stLinkCriteria1 作为字符串的Dim stLinkCriteria2 stLink

我遇到了运行时错误“3075”。我是VBA的新手!>我能知道哪里出了问题吗?我解决不了

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

错误:

运行时错误“3075”:

查询表达式“”和[主要申请人名称]中的语法错误(缺少运算符),如“Sally”

公共子搜索_记录()
将stDocName设置为字符串
将标准设置为字符串
作为字符串的Dim stLinkCriteria1
作为字符串的Dim stLinkCriteria2
stLinkCriteria=“”
stDocName=“frmDisplayInfo”
如果(Me!txtMainName“”),则
stLinkCriteria1=“[Main applicator Name]如“&Me![txtMainName]&””
stLinkCriteria=stLinkCriteria&“和”&stLinkCriteria1
如果结束
如果(Me!txtIDNo“”),则
stLinkCriteria2=“[ID-No]像“&Me![txtIDNo]&””
stLinkCriteria=stLinkCriteria&“和”&stLinkCriteria2
如果结束
“(*此部分突出显示*)
DoCmd.OpenForm stDocName,,stLinkCriteria
DoCmd.最大化
端接头

运行时错误3975
无效运算符
,通过谷歌快速搜索
访问vba运行时错误3075
(您可以自己创建)

问题是,您只为
stCriteria
分配了
的值。
If
语句执行后,
stCriteria
将被分配
stCriteria和stCriteria1
的值,这是无效的

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

解决方案是修改代码,仅在需要时添加

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
stLinkCriteria=“”
stDocName=“frmDisplayInfo”
如果(Me!txtMainName“”),则
stLinkCriteria=“[Main applicator Name]Like'”&Me![txtMainName]&“”
如果结束
如果(Me!txtIDNo“”),则
如果条件为“”,则
stLinkCriteria=stLinkCriteria&“和”
如果结束
stLinkCriteria2=“[ID-No]像“&Me![txtIDNo]&””
stLinkCriteria=stLinkCriteria&“和”&stLinkCriteria2
如果结束

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

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

你可能应该说:

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    
如果(Me!txtMainName“”)那么
stLinkCriteria1=“[Main applicator Name]Like'”&我![txtMainName]&“”

如果是stLinkCriteria“”,则我从中的点和字段名之间的额外空格中获得此错误:

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

Microsoft注意:请创建更精确、更有用的错误消息。谢谢毫无疑问,您会在这方面做得很好。

当您访问
DoCmd.OpenForm
时,
stLinkCriteria
的内容是什么(它包含的实际值,而不是您认为它包含的值)?(在
OpenForm
行设置一个断点,运行到该点,然后在到达该点时查看
stLinkCriteria
是什么。)非常感谢!这是可行的,但我认为你错过了一个“如果结束”。解释清楚了,我现在能理解哪里出了问题。是的,我知道了。我会修好的。谢谢。:-)回到我停下来的地方。。。如何显示我的记录?文本框没有显示我想要的结果…我不知道。您的问题中没有关于显示结果的问题,这意味着这是一个新的、单独的问题。
DoCmd.RunSQL "UPDATE  cp  INNER JOIN [char_lib] ON [cp]. [library_id]  = [char_lib].[id] set..