为什么我的VBA / SQL查询说我错过了一个运营商?

时间:2014-09-03 12:59:49

标签: sql vba ms-access access-vba

有人能发现语法错误吗?我觉得我拥有必要的OpenRecordset方法的所有运算符。

The error says "Syntax error (missing operator) in query expression '(Date: = 10/31/2014)'.

class变量等于字符串"007-14 A"

以下是错误来自的代码行:

Set rec = db.OpenRecordset("SELECT '" & class & "' FROM tblCalendar WHERE (Date: = 10/31/2014)")

我是否对错误的内容有错误的引用,或者它可能与字段Date的标题中的分号有关?

class是我想要选择的字段。所以实际的字段标题是007-14 A。

1 个答案:

答案 0 :(得分:7)

这里有3个错误。 '007-14 A'Date:不是合法的列名,10/31/2014不是合法的日期字面值。

将非法列名包装在方括号中,例如[007-14 A][Date:]

将日期文字值格式化为#10/31/2014#

如果该日期文字格式不起作用,请尝试#31 Oct 2014#

注意:MS Access使用JET引擎SQL方言,它看起来与VB非常相似(我想它正在利用VBA引擎进行解析)。一般来说,您可以在VB6,VBA,VBScript,ADO断开连接的记录集过滤器和MS Access查询中使用相同的文字语法和内置函数。但是,有一些微妙的差异可能会让你失望。