问题:错误“ 3075”语法错误(缺少运算符)访问2013

时间:2019-01-17 01:48:20

标签: vba access

任何人都可以告诉我我的代码有什么问题吗

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

非常感谢!

3 个答案:

答案 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视图中。这将为您提供语法。