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