2016-04-19 2 views
1

я пытаюсь получить имена параметров из параметризованных запросов, хранящихся в базе данных MS Access с помощью этого кода:VBA ADODB - Получение параметры из параметризованного запроса

Dim cmd As New ADODB.Command 
Dim cnn As ADODB.Connection 

Set cnn = CurrentProject.Connection 

With cmd 
    .ActiveConnection = cnn 
    .CommandType = adCmdStoredProc 
    .NamedParameters = True 
    .CommandText = "nameOfParameterizedQuery" 
    .Parameters.Refresh 
End With 

...... 

Однако это не распространяется работа, так как коллекция Parameters остается пустым. I've пытались определить параметры, добавив следующий код перед ЗЕЬЕСТОМ в запросе SQL, как:

PARAMETERS [parameter1] Datatype, [parameter2] Datatype .... ; 
SELECT .... 

Но я не имел никакого успеха. Я прочитал, что драйверы Microsoft Access ODBC и OLE DB в настоящее время не поддерживают автоматическую группировку параметров.

Это правда? Есть ли способ использовать ADO для получения имен параметров из параметризованного запроса в базе данных MS Access?

Заранее спасибо.

+0

Я знаю, но я обычно использую ADO, и я хотел бы сохранить этот путь, поскольку, с моей точки зрения, это облегчает будущую миграцию в другую базу данных. – Fiz

ответ

0

Да, это возможно сделать с помощью ADODB. Вам просто нужно сделать несколько незначительных изменений в код VB (см):

Dim cmd as New ADODB.Command 
Dim cnn as New ADODB.Connection 

cnn.Provider = "blah" 
cnn.Open = "blah;blah" 

cmd.ActiveConnection = cnn 
cmd.CommandText = "NameOfParameterizedQuery" 
cmd.Parameters.Append cmd.CreateParameter(, adDate, adParamInput, Value:=#6/1/17#) 

Range("A1").CopyFromRecordset Cmd.Execute 

cnn.Close 
Set cmd = nothing 
Set cnn = nothing 


Может понравиться: https://support.microsoft.com/en-us/help/181734/how-to-invoke-a-parameterized-ado-query-using-vba-c-java

Я надеюсь, что помогает.