Я пытаюсь выполнить запрос в базе данных Access 2007 из сценария Excel 2007 VBA. Запрос доступа имеет параметры, называемые «Год» и «Месяц».
Я пытаюсь заставить работать следующий код:
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, и получил ту же ошибку.