SQL 查询执行的奇怪之处。 我正在尝试从 Excel VBA 查询 Access DB 以下查询运行正常
"SELECT * FROM LL_domain"
执行这个简单查询时
"SELECT * FROM LL_domain WHERE domain = 'de"
我收到运行时错误。
我将查询复制到 Access 查询框架中,它工作正常。看来,这不是语法问题。 对于连接对象的其他提供者,我遇到了同样的错误。
这可能是什么原因?
我的一些代码:
Function foo (ByRef dBase as Object) as Boolean
Dim myConn2 as Object
Set myConn2 = CN.getCN_Ace16(dBase.fileDB.path)
Me.marketID = getMarketID(myConn2)
End Function
Function getCN_Ace16(ByVal dbPath As String) As Object
Set getCN_Ace16 = CreateObject("ADODB.Connection")
getCN_Ace16.connectionString = "Provider=Microsoft.ACE.OLEDB.16.0;Data Source=" & dbPath
End Function
Function getMarketID(ByRef myConn As Object) As String
Dim RS As Object
myConn.Open
Set RS = myConn.Execute("SELECT * FROM LL_domain WHERE domain = 'de'")
......
End Function
DOMAIN
是 Access 数据库引擎保留字
如果您将字段名称括起来或限定名称(如以下示例之一所示),您的查询可能会起作用...
SELECT * FROM LL_domain WHERE [domain] = 'de'
SELECT * FROM LL_domain WHERE LL_domain.domain = 'de'
SELECT * FROM LL_domain AS ll WHERE ll.domain = 'de'
但是,如果是我,我更愿意将字段名称更改为非保留字的名称。 Allen Browne 提供了 Access 中的问题名称和保留字的完整列表