40735: при нажатии кнопки триггер поднял необработанное исключение ORA-305500 - PullRequest
0 голосов
/ 19 ноября 2018

Я хочу сгенерировать отчет в файле Excel, используя оракулы 10g, и реализовать триггер при нажатии кнопки.При нажатии кнопки появляется следующая ошибка:

40735: триггер при нажатии кнопки поднимается, необработанное исключение ORA-305500

Код:

declare
  application ole2.obj_type;
  workbooks ole2.obj_type;
  workbook ole2.obj_type;
  worksheets ole2.obj_type;
  worksheet ole2.obj_type;
 cell ole2.obj_type;
 arglist ole2.list_type;
 row_num number;
 col_num number;
 fontObj ole2.obj_type;

cursor rec is SELECT so.descr saleorgdescr,ih.invdate invdatemaster, ih.docNUM docnum,
   TO_CHAR(ih.invdate,'mon-yyyy') invmonth
FROM ARMINVHEAD ih, SDMSALEORG so
WHERE
ih.status='69'
AND  TO_DATE(ih.INVDATE,'DD-MM-RRRR')
              BETWEEN
                   TO_DATE('01-01-2008','DD-MM-RRRR') 
              AND  
                   TO_DATE('01-01-2009','DD-MM-RRRR') 
order by IH.INVDATE, ih.docnum;

procedure SetCellValue(rowid number,colid number,cellValue varchar) is
begin
arglist := ole2.create_arglist;
ole2.add_arg(arglist,rowid);
ole2.add_arg(arglist,colid);
cell:= ole2.get_obj_property(worksheet,'Cells',arglist);
fontObj := ole2.get_obj_property(cell,'Font');
ole2.destroy_arglist(arglist);
ole2.set_property(cell,'value',cellValue);
ole2.set_property(fontObj,'Size',16);
ole2.set_property(fontObj,'BOLD',1);
ole2.set_property(fontObj,'ColorIndex',7);
ole2.release_obj(cell);
end SetCellValue;

procedure app_init is
begin
application := ole2.create_obj('Excel.Application');
ole2.set_property(application,'Visible',true);
workbooks := ole2.get_obj_property(application,'workbooks');
workbook := ole2.Get_Obj_Property(workbooks,'add');
worksheets := ole2.get_obj_property(application,'worksheets');
worksheet := ole2.Get_Obj_Property(worksheets,'add');
ole2.set_property(worksheet,'Name','Emp Sheet');
end app_init;

procedure save_excel(path varchar,filename varchar) is
begin
OLE2.Release_Obj(worksheet);
OLE2.Release_Obj(worksheets);
-- Save the Excel file created
If path is not null then
Arglist := OLE2.Create_Arglist;
OLE2.Add_Arg(Arglist,path||'\'||file_name||'.xls');
OLE2.Invoke(workbook, 'SaveAs', Arglist);
OLE2.Destroy_Arglist(Arglist);
end if;
end save_excel;

begin
app_init;
row_num:=1;
col_num:=1;
SetCellValue(row_num,col_num,'saleorgdescr');
col_num:=col_num + 1;
SetCellValue(row_num,col_num,'invdatemaster');
col_num:=col_num + 1;
SetCellValue(row_num,col_num,'docnum');
col_num:=col_num + 1;
SetCellValue(row_num,col_num,'invmonth');
for i in rec loop
row_num:=row_num + 1;
col_num:=1;
SetCellValue(row_num,col_num,i.saleorgdescr);    
col_num:=2;
SetCellValue(row_num,col_num,i.invdatemaster);    
col_num:=3;
SetCellValue(row_num,col_num,i.docnum);
col_num:=4;
SetCellValue(row_num,col_num,i.invmonth);   
end loop;    
save_excel('C:\excel_export','emp_data');       
OLE2.Release_Obj(workbook);
OLE2.Release_Obj(workbooks);
OLE2.Release_Obj(application); 
end;

Как решить эту проблему в оракуловых формах 10g?

Я использую оракульные формы 10g с Oracle Apps ERP Module

1 Ответ

0 голосов
/ 19 ноября 2018

ORA-305500 - это общая ошибка OLE2, указывающая на некоторую проблему между формами и ресурсом, отличным от Oracle, в данном случае Excel.

Следующая ошибка возникает в приложении строки: = ole2.create_obj('Excel.Application');

Основная проблема заключается в том, что вы используете формы 10g, в которых используется многоуровневая архитектура.Это значительное изменение по сравнению с клиент-сервером Forms 6i или более ранней версии.Это означает, что Forms OLE локально запускает такие приложения, как Excel, в приложение Forms , т. Е. На сервере приложений Forms, а не на рабочем столе.Таким образом, OLE не будет работать, если ваш сервер приложений Forms не работает в ОС Windows и не установлен Excel, и даже в этом случае он генерирует файл на сервере.

Forms 10g поставляется с библиотекой Webutils для функциональной поддержки стиля клиент-сервер в многоуровневой системе.Вам нужно использовать функции CLIENT_OLE2() для преобразования Excel в формах 10g и WebUtil_File.File_Save_Dialog() для сохранения файла в локальном каталоге.

Хороший пример на форуме OTN здесь (ссылка).


Ошибка Webutil: компонент Oracle.forms.webutil.ole.OleFunctions не найден

Похоже, вы не настроили формы для использования Webutilправильно (или вообще).В справке по формам есть кое-что, или вы можете следовать этой статье (ссылка).

...