【发布时间】:2011-09-26 05:22:42
【问题描述】:
我正在尝试通过 Excel 2007 VBA 脚本在 Access 2007 数据库中运行查询。 Access 查询具有名为“Year”和“Month”的参数。
我正在尝试让以下代码工作:
Sub RunMyQuery()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim dbPath As String
Dim stQRY As String
Dim stCon As String
Dim cmd As New ADODB.Command
Dim prmYear As New ADODB.Parameter
Dim prmMonth As New ADODB.Parameter
dbPath = "<PATH_TO_MY_DB>"
stCon = "Provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source=" & dbPath & ";"
cn.Open (stCon)
cn.CursorLocation = adUseClient
Set cmd.ActiveConnection = cn
Set prmYear = cmd.CreateParameter("Year", adNumeric, adParamInput, , 2011)
Set prmMonth = cmd.CreateParameter("Month", adNumeric, adParamInput, , 5)
cmd.Parameters.Append prmYear
cmd.Parameters.Append prmMonth
cmd.CommandText = "SELECT * FROM [Month_Totals]"
cmd.CommandType = adCmdTable
Set rs = cmd.Execute
Sheets("Sheet1").Range("A1").CopyFromRecordset rs
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
当我运行它时,代码会在“cmd.Execute”上停止
运行时错误'-214217900 (80040e14)':
FROM 子句中的语法错误。
我做错了什么?
命令文本对我来说似乎很简单。我错过了什么吗?
我是否滥用了 ADODB.Command 的参数功能?我认为这不是问题所在,因为我尝试使用非参数化查询代替 Month_Totals 运行相同的脚本,并得到相同的错误。
【问题讨论】:
-
我不知道这是否适用(我直接在Access中工作所以从不使用ADODB),但我认为没有命名参数,所以您需要按顺序使用它们。
标签: excel ms-access vba parameters syntax-error