String Excel VBA,查询表达式中的语法错误(缺少运算符)

String Excel VBA,查询表达式中的语法错误(缺少运算符),string,vba,excel,ms-access,String,Vba,Excel,Ms Access,我正在尝试使用VBA for Excel从MS Access数据库检索结果集。在VBA代码中,我构造的字符串等于: strSql = "SELECT * FROM Pricing WHERE Account In (''1234'', ''ABCD'') '; " 请注意,SQL语句中的字符串周围有两个单引号。分号前还有一个引号。如果我没弄错的话,这个结果是: 从“1234”、“ABCD”中帐户所在的定价中选择* 直接在MS Access中运行时,此查询工作正常。但是,在Excel VBA中,

我正在尝试使用VBA for Excel从MS Access数据库检索结果集。在VBA代码中,我构造的字符串等于:

strSql = "SELECT * FROM Pricing WHERE Account In (''1234'', ''ABCD'') '; "
请注意,SQL语句中的字符串周围有两个单引号。分号前还有一个引号。如果我没弄错的话,这个结果是:

从“1234”、“ABCD”中帐户所在的定价中选择*

直接在MS Access中运行时,此查询工作正常。但是,在Excel VBA中,我不断遇到运行时错误:

语法错误查询表达式“1234中的帐户,ABCD”;“中缺少运算符”

请注意,此错误实际上切断了SQL语句的前半部分

我尝试了一些变体,使用双引号、双引号、无引号等等

有什么建议吗


谢谢。

请用这个试试:

strSql = "SELECT * FROM Pricing WHERE Account In ('1234', 'ABCD')" 

在Excel VBA中,字符串标识符是双引号字符。当用双引号括起来时,不需要将单引号字符加倍,就可以将它们传递到数据库

试试这个:

strSql = "SELECT * FROM Pricing WHERE Account In ('1234', 'ABCD')"

在分号之前似乎有一个不匹配的引号。如果你把它去掉怎么办?如果让语句在“1234”、“ABCD”中从定价中选择*帐户,会发生什么情况;?添加调试。打印strSql,运行代码并查看它在即时窗口中显示的内容。@HansUp这是我真正解决问题的方法。诚然,我在ExcelVBA中的调试能力相当差。谢谢好的如果其中一个目标值实际包含一个引号。。。例如3点钟。。。在“abc”、“3 oclock”中,您需要像这样将该引用加倍,但更一般地说,始终要验证代码生成的SQL语句的文本是否与您期望的内容匹配,这就是Debug.Print和Immediate窗口可能有用的地方。如果它的结尾还包含分号,则可以这样做。请不要只发布代码答案。它们对未来的访问者没有用处。只有代码的答案不太可能对未来的访问者有帮助。请考虑扩展你的答案,包括解释你改变了什么,以及为什么你的代码工作。谢谢这个提示。我将来会这样做。