Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 sp_OACreate 'SAP.Functions'  [new]
smVladZ
Member

Откуда:
Сообщений: 13
Здравствуйте!

Хочу написать ХП для доступа к SAP BAPI через activeX

В ХП на SQL2008R2:
EXEC @hr = sp_OACreate 'SAP.Functions', @object OUT
@hr возвращает значение <> 0 , т.е. выдает ошибку (Класс не зарегистрирован)

а в VBA :
Set funcControl = CreateObject("SAP.Functions") все отрабатывает нормально

В чем причина может быть?

Заранее благодарен.

р.s. Ole Automation Procedures run_value = 1
24 апр 12, 16:41    [12464151]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate 'SAP.Functions'  [new]
Glory
Member

Откуда:
Сообщений: 104751
smVladZ
В чем причина может быть?

В том, что EXEC отрабатывает на сервере.
А ваш CreateObject - у вас на машине.
24 апр 12, 16:42    [12464167]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate 'SAP.Functions'  [new]
smVladZ
Member

Откуда:
Сообщений: 13
извините не уточнил, VBA отрабатывало тоже на сервере,где и SQL.
24 апр 12, 17:05    [12464333]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate 'SAP.Functions'  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
smVladZ
VBA отрабатывало тоже на сервере, где и SQL.
А в каких контекстах/олицетворении пользователя?
24 апр 12, 17:09    [12464367]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate 'SAP.Functions'  [new]
smVladZ
Member

Откуда:
Сообщений: 13
запуск процедуры от имени пользователя, наделенного полным набором админских ролей
24 апр 12, 17:29    [12464568]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate 'SAP.Functions'  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Ссори. Копать надо.
Может там есть ограничения (по свойствам) на OLE классы. Может быть кэш и вы забыли рестартануть сервак.
Может в VBA CreateObject имеет не OLE, а более широкий смысл.
BOL
The specified OLE object must be valid and must support the IDispatch interface.
24 апр 12, 19:29    [12465392]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate 'SAP.Functions'  [new]
smVladZ
Member

Откуда:
Сообщений: 13
Ребутил не только SQL, но и сам сервак.

Получается в ХП: sp_OACreate 'SAP.Functions' и VBA:CreateObject("SAP.Functions") отрабатывают по разному.

p.s.: если взять другой компонент, то код возврата - 0 (нет ошибки)
EXEC @hr = sp_OACreate 'DTS.ConnectionManagerOlap.2', @object OUT
в чем разница?
25 апр 12, 09:44    [12467088]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate 'SAP.Functions'  [new]
Glory
Member

Откуда:
Сообщений: 104751
smVladZ
VBA отрабатывало тоже на сервере,где и SQL.

Каким образом ? Вы запускали из MSSQL ваш код на VBA ?
25 апр 12, 09:57    [12467144]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate 'SAP.Functions'  [new]
smVladZ
Member

Откуда:
Сообщений: 13
используются одни и теже компоненты ActiveX в двух вариантах:
1. в хранимой процедуре через OLE Automation (sp_OACreate, sp_OAGetProperty ...)
2. в Excel VBA (CreateObject..)
25 апр 12, 10:08    [12467189]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate 'SAP.Functions'  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Не верю.
smVladZ
Класс не зарегистрирован
Неужели для VBA класс необязательно должен быть зарегистрирован? Может к нему (DLL) вы путь прописываете в VBA.

При инстале классы обычно регятся сами. Может руки кривые, а может баги.
Руками обычно типа такого:
regsvr32 BlaBlaBla.dll
25 апр 12, 18:59    [12471138]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate 'SAP.Functions'  [new]
smVladZ
Member

Откуда:
Сообщений: 13
При установке SAP LOGON все компоненты регятся сами, вчастности wdtfuncs.ocx.
В вветке реестра HKEY_CLASSES_ROOT\CLSID все пропописано .
Повторюсь, в VBA все отрабатывает, а в хранимке ошибка.
26 апр 12, 09:26    [12472491]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate 'SAP.Functions'  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
smVladZ
Повторюсь, в VBA все отрабатывает, а в хранимке ошибка.
Также повторюсь: 12465392.
OLE это не тупо ActiveX. Поддержка интерфейса IDispatch у компонента обязательна.

Нашёл на просторах:
Bodo
SAP has also the "DCOM Connector" which offers "strongly typed compile time objects", which don't use the generic IDispatch interface.
Так что в пролёте.
26 апр 12, 11:46    [12473189]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate 'SAP.Functions'  [new]
smVladZ
Member

Откуда:
Сообщений: 13
Большое спасиба за помощь. Наверное никак не получиться их ХП дергать SAP BAPI...
26 апр 12, 12:25    [12473471]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить