我遇到了运行时错误'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
答案 0 :(得分:7)
Runtime error 3975
为Invalid 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注意:请创建更准确,更有用的错误消息。谢谢。毫无疑问,我对此表示反对。