2016-01-07 2 views
0

Я пытаюсь запустить запрос, хранящийся в базе данных доступа из excel vba. Запрос выполняется нормально, если я открываю и запускаю его в базе данных доступа, но вызывая ошибку при запуске его из модуля VBA. Запрос использует хранимую функцию, называемую «Getlist», которая находится в модуле базы данных доступа. Ниже приведен запрос.Выполнение сохраненного запроса, содержащего «функцию» в доступе db от excel

SELECT paramconcat.parameter, GetList("Select concat From paramconcat As T1 Where T1.parameter = """ & [paramconcat].[parameter] & """","",", ") AS Concatenated INTO results 
FROM paramconcat 
GROUP BY paramconcat.parameter; 

VBA Модуль

Sub test1() 
Dim con As ADODB.Connection 
Dim rs As ADODB.Recordset 
Set con = New ADODB.Connection 
With con 
.Provider = "Microsoft.ACE.OLEDB.12.0" 
.Open "C:\Users\erukhq\Documents\My Received Files\paramcheck.accdb" 
End With 
con.Execute "ParamconcatQ" 
con.Close 
End Sub 

Ошибка я получаю как ниже.

enter image description here

ответ

1

Вы можете использовать только встроенные, встроенные функции VBA в запросах, которые вызываются из-за пределов доступа, так что ваша пользовательская функция будет работать при выполнении запроса внутри доступа, но он не будет работать при вызове через ADO.

Вам также понадобится объект ADODB.Command.

'... Dim cmd as ADODB.Command Set cmd = New ADODB.Command Cmd.CommandText = "yourqueryname" Cmd.CommandType = acCommandUnknown 'you might need to try different values of the CommandType enum. Cmd.ActiveConnection = conn Set rst = new ADODB.record set Rst.open cmd

+0

Вы можете использовать * родную * функцию VBA как левые и Мид, но вы не можете использовать пользовательские функции или функцию доступа или функцию из ссылочных библиотек. – ThunderFrame

+0

Есть ли способ конвертировать определенную пользователем функцию в native? – Aprilian8

+0

Я просто заметил, что вы вызываете запрос по имени, используя метод Execute. Я не думаю, что соединение распознает это, и это относится к вашей текущей ошибке. Вам нужно добавить объект ADODB.Command в микс. – ThunderFrame

Смежные вопросы