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