任何人都可以告诉我我的代码有什么问题吗
Private Sub Command379_Click
Dim strsearch as String
Dim strText as String
strText = Me.TxtSearch.Value
strsearch = "Select * from qryInfo
where ((Supplier Name LIKE ""*" & strText & "*"")
OR (Type LIKE ""*" & strText & "*""))"
Me.RecordSource = strsearch
End Sub
非常感谢!
答案 0 :(得分:0)
如果要匹配包含双引号的文本,请按照以下步骤操作:
文本:
"abc"
VBA中的文本:
"""" & "abc" & """" (4 double quotation marks are necessary)
谢谢。
答案 1 :(得分:0)
应考虑以下事项:
Supplier Name
,则必须用方括号[Supplier Name]
括起来。()
并不是必需的。您可以忽略它们。""
),可以使用单引号('
)代替,这使阅读更加清晰。 / li>
Type
是保留字。如果可能的话,您不应该使用它。最少也要用方括号([Type]
)包围。如果您的SQL字符串确实在VBA中分成几行,则必须使用下划线(_
)和字符串串联来显式地处理它:
strTest = "This is a string" & _
" defined in several" & _
" lines of code in VBA."
或者您可以使用此:
strTest = "This is a string"
strTest = strTest & " defined in several"
strTest = strTest & " lines of code in VBA."
所以最后,包含VBA的(单行)SQL是这样的:
strSearch = "Select * From qryInfo Where [Supplier Name] Like '*" & strText & "*' Or [Type] Like '*" & strText & "*'"
也很重要:
请注意,当前使用字符串连接的方法不能避免SQL注入,这是一个真正的安全性问题!
在这里了解如何更好地处理它(例如,通过在VBA中使用参数查询):How do I use parameters in VBA in the different contexts in Microsoft Access?
答案 2 :(得分:0)
除了通配符外什么都没有,与根本没有WHERE标准相同。因此,您不需要WHERE语句。
......话虽如此-我建议您使用查询设计视图创建查询,然后在您认为正确的情况下返回记录后-使用该选项将其显示在SQL视图中。这将为您提供语法。