【问题标题】:Issue: error '3075' Syntax error (missing operator) access 2013问题:错误“3075”语法错误(缺少运算符)访问 2013
【发布时间】:2020-07-05 21:10:03
【问题描述】:

谁能告诉我我的代码有什么问题:

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

非常感谢!

【问题讨论】:

    标签: vba ms-access


    【解决方案1】:

    如果你想匹配包含双引号的文本,请点击这里:

    文本:

    "abc"
    

    VBA 中的文本:

    """" & "abc" & """" (4 double quotation marks are necessary)
    

    谢谢。

    【讨论】:

      【解决方案2】:

      应考虑以下几点:

      • 如果您有像Supplier Name 这样的带有空白的字段名,那么您必须用方括号括起来:[Supplier Name]
      • 在您的情况下,括号() 并不是必需的。您可以省略它们。
      • 为了添加文字引号,您可以使用单引号 ('),而不是使用两个引号 (""),这样可以更清楚地阅读。
      • 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."
        

      所以最后你的(单行)SQL 包含 VBA 将是这样的:

      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?

      【讨论】:

        【解决方案3】:

        只有通配符与根本没有 WHERE 条件是一样的。所以你不需要 WHERE 语句。

        ......话虽如此 - 我建议您使用查询设计视图创建查询,然后一旦它返回您认为正确的记录 - 然后使用该选项在 SQL 视图中显示它。这将为您提供语法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-09-27
          • 2015-09-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多