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

Откуда: Irkutsk
Сообщений: 81
В PLSQL через OrdCOM пытаюсь добавить лист в конец Excel worksheets
в VBA это бы выглядело:
Sheets.Add After:=Sheets(Sheets.Count)

процедурный вызов (как в OrdCOM.INVOKE) в VBA:
Sub Macros1()
Set i = Sheets.Add(Null, Sheets(Sheets.Count), 1, xlWorksheet) 
End Sub

В PLSQL простое добавления листа работает:
    i:=OrdCOM.Invoke(WorkSheetsToken, 'Add', 0, SheetToken);

но новый лист добавляется перед активным листом

Когда вызываю метод с четырьмя параметрами:
    OrdCOM.InitArg();
    OrdCOM.SetArg(to_number(null), 'DISPATCH');
    OrdCOM.SetArg(WorkSheetToken, 'DISPATCH');
    OrdCOM.SetArg(1, 'I2');
    OrdCOM.SetArg(-4167, 'I4');
    i:=OrdCOM.Invoke(WorkSheetsToken, 'Add', 4, RetSheetToken);

То возвращает ошибку,
error_description=COM-0014: Failure to invoke
Я грешу на передачу NULL в качестве аргумента.
Кто-нибудь боролся с такой ошибкой?
7 мар 19, 12:26    [21827182]     Ответить | Цитировать Сообщить модератору
 Re: OrdCOM.INVOKE с NULL параметром  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7438
На правах идеи: вставить, а потом "старый" лист (перед которым вставляли) подвинуть Sheets.Move

сам так не делал
7 мар 19, 12:59    [21827238]     Ответить | Цитировать Сообщить модератору
 Re: OrdCOM.INVOKE с NULL параметром  [new]
vge
Member

Откуда: Irkutsk
Сообщений: 81
Leonid Kudryavtsev,
:)) c Move( Before, After ) та же беда, один из параметров должен быть NULL
7 мар 19, 13:14    [21827262]     Ответить | Цитировать Сообщить модератору
 Re: OrdCOM.INVOKE с NULL параметром  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7438
Так в Move ты можешь указывать before, который работает
Если я правильно понял/помню проблема только с after

Из параметров указываешь только before, остальные по умолчанию (1 параметр)

Не проверить, Oracle Server на Linux'ах крутится. Но я помню, что с похожей проблемой сталкивался в Oracle Forms лет 10+ назад (((
7 мар 19, 14:28    [21827347]     Ответить | Цитировать Сообщить модератору
 Re: OrdCOM.INVOKE с NULL параметром  [new]
-2-
Member

Откуда:
Сообщений: 14420
vge,

Возможно в пакете ordexcel более экселовские интерфейсы. Только com automation депрекейтед уже лет десять как и в 12с его выпилили окончательно.
Если база на винде, с экселом можно работать через процедуры на дот-нет.
7 мар 19, 15:34    [21827459]     Ответить | Цитировать Сообщить модератору
 Re: OrdCOM.INVOKE с NULL параметром  [new]
vge
Member

Откуда: Irkutsk
Сообщений: 81
Leonid Kudryavtsev,
в Oracle проверю в понед.
в vba отрабатывает оба варианта без ошибок
Call Sheets(2).Move(Sheets(1),NULL)
Call Sheets(2).Move(Sheets(1))
возможно прокатит
спасибо что настояли)
7 мар 19, 19:13    [21827667]     Ответить | Цитировать Сообщить модератору
 Re: OrdCOM.INVOKE с NULL параметром  [new]
vge
Member

Откуда: Irkutsk
Сообщений: 81
-2-,
Oracle Database 11g Release 11.2.0.3.0 - 64bit Production
База промышленная 24/7
Ради Add Sheet "в нужное место" менять отлаженный, не малый, функционал - не тот случай
хотя "деприкайтед и выпилмно" заставляет задуматься, но это из стратегич.рисков)
спасибо
7 мар 19, 19:15    [21827668]     Ответить | Цитировать Сообщить модератору
 Re: OrdCOM.INVOKE с NULL параметром  [new]
vge
Member

Откуда: Irkutsk
Сообщений: 81
Leonid Kudryavtsev,
Да, все получилось
11 мар 19, 13:54    [21829155]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить