Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Пытаюсь обратиться к пакеджу Oracle из под vba Access  [new]
JohnBMW
Member

Откуда:
Сообщений: 6
Текст модуля такой:

Dim cn, cmd, Prm As Object
Set cn = CreateObject("ADODB.Connection")
Set cmd = CreateObject("ADODB.Command")
Set Prm = CreateObject("ADODB.Parameter")

cn.ConnectionString = "Provider=MSDAORA.1;Password=INSLAB;User ID=INSLAB;Data Source=ORAMAIN;Persist Security Info=True;"
cn.Open

cmd.ActiveConnection = cn
cmd.CommandText = "USERINIT.CheckAndSetUserParams"
cmd.CommandType = adCmdStoredProc

cmd.Parameters.Refresh
cmd.Parameters(1) = "хххх"
cmd.Parameters(2) = "ххххх"

cmd.Parameters.Append Prm

cmd.Execute


На выделенной строке выполнение прерывается с сообщением:
Run-time error '3001':

Аргументы имеют неверный тип, выходят за пределы
допустимого диапазона или вступают в конфликт друг с другом.


Причину найти пока не удалось ... хотя, вроде, много всего перекопал ...

Кто может подсказать работающий вариант текста?
3 окт 17, 13:52    [20838915]     Ответить | Цитировать Сообщить модератору
 Re: Пытаюсь обратиться к пакеджу Oracle из под vba Access  [new]
guest_rusimport
Guest
JohnBMW,
так пробуйте
Dim cn As Object, cmd As Object, Prm As Object
...
3 окт 17, 14:00    [20838961]     Ответить | Цитировать Сообщить модератору
 Re: Пытаюсь обратиться к пакеджу Oracle из под vba Access  [new]
JohnBMW
Member

Откуда:
Сообщений: 6
Не помогло ...
3 окт 17, 14:02    [20838978]     Ответить | Цитировать Сообщить модератору
 Re: Пытаюсь обратиться к пакеджу Oracle из под vba Access  [new]
guest_rusimport
Guest
JohnBMW
Не помогло ...


тогда явно укажите (и подключите в References библиотеку ADO)
Dim CMD As ADODB.Command
Dim Prm As ADODB.Parameter
Dim cn as new ADODB.Connection

Set CMD = New ADODB.Command
    cn.ConnectionString = "Provider=MSDAORA.1;Password=INSLAB;User ID=INSLAB;Data Source=ORAMAIN;Persist Security Info=True;"
    cn.Open
    CMD.ActiveConnection = cn
    CMD.CommandType = adCmdStoredProc
    CMD.CommandText = "USERINIT.CheckAndSetUserParams"
 ...
3 окт 17, 14:22    [20839065]     Ответить | Цитировать Сообщить модератору
 Re: Пытаюсь обратиться к пакеджу Oracle из под vba Access  [new]
JohnBMW
Member

Откуда:
Сообщений: 6
а как References библиотеку ADO подключить?
3 окт 17, 14:45    [20839136]     Ответить | Цитировать Сообщить модератору
 Re: Пытаюсь обратиться к пакеджу Oracle из под vba Access  [new]
guest_rusimport
Guest
JohnBMW
а как References библиотеку ADO подключить?

Запускаете базу, ALT+F11 (заходите в редактор VBA), меню Tools-References и подключаете

К сообщению приложен файл. Размер - 39Kb
3 окт 17, 14:59    [20839184]     Ответить | Цитировать Сообщить модератору
 Re: Пытаюсь обратиться к пакеджу Oracle из под vba Access  [new]
JohnBMW
Member

Откуда:
Сообщений: 6
guest_rusimport, Спасибо, это место прошёл.
Теперь проблема с передачей параметров, на строке:

cmd.Parameters.Refresh

вылетает ошибка
ORA-06550:
PLS-00306: ошибочно число или типы аргументов при обращении
к 'CHECKANDSETUSERPARAMS'


что это значит понять не могу, ведь по тексту сами параметры определяются ниже.
4 окт 17, 12:59    [20841815]     Ответить | Цитировать Сообщить модератору
 Re: Пытаюсь обратиться к пакеджу Oracle из под vba Access  [new]
Refresh,
Guest
JohnBMW,

Убери Refresh и сделай через CreateParameter

cmd.Parameters.Append cmd.CreateParameter (...)
4 окт 17, 14:50    [20842361]     Ответить | Цитировать Сообщить модератору
 Re: Пытаюсь обратиться к пакеджу Oracle из под vba Access  [new]
JohnBMW
Member

Откуда:
Сообщений: 6
Refresh, Большое спасибо! Всё заработало ...
4 окт 17, 15:33    [20842558]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить