Oracle表单在配置WEBUTIL后冻结
我正在使用oracle forms 10g。它是基于web的oracle表单应用程序。我想从Oracle Forms 10g生成Excel报告。我配置了WEBUTIL并使用CLIENT_OLE2包。按下按钮时在触发器中声明的过程。当按下按钮时,表格突然冻结,他们什么也做不了。退出按钮和菜单选项停止工作。它不会发出任何信息,也不会执行任何操作 程序代码:Oracle表单在配置WEBUTIL后冻结,oracle,oracle10g,oracleforms,oracle-fusion-middleware,Oracle,Oracle10g,Oracleforms,Oracle Fusion Middleware,我正在使用oracle forms 10g。它是基于web的oracle表单应用程序。我想从Oracle Forms 10g生成Excel报告。我配置了WEBUTIL并使用CLIENT_OLE2包。按下按钮时在触发器中声明的过程。当按下按钮时,表格突然冻结,他们什么也做不了。退出按钮和菜单选项停止工作。它不会发出任何信息,也不会执行任何操作 程序代码: declare application client_ole2.obj_type; workbooks client_ole2.obj_ty
declare
application client_ole2.obj_type;
workbooks client_ole2.obj_type;
workbook client_ole2.obj_type;
worksheets client_ole2.obj_type;
worksheet client_ole2.obj_type;
cell client_ole2.obj_type;
arglist client_ole2.list_type;
row_num number;
col_num number;
fontObj client_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 := client_ole2.create_arglist;
client_ole2.add_arg(arglist,rowid);
client_ole2.add_arg(arglist,colid);
cell:= client_ole2.get_obj_property(worksheet,'Cells',arglist);
fontObj := client_ole2.get_obj_property(cell,'Font');
client_ole2.destroy_arglist(arglist);
client_ole2.set_property(cell,'value',cellValue);
client_ole2.set_property(fontObj,'Size',16);
client_ole2.set_property(fontObj,'BOLD',1);
client_ole2.set_property(fontObj,'ColorIndex',7);
client_ole2.release_obj(cell);
end SetCellValue;
procedure app_init is
begin
application := client_ole2.create_obj('Excel.Application');
client_ole2.set_property(application,'Visible',true);
workbooks := client_ole2.get_obj_property(application,'workbooks');
workbook := client_ole2.Get_Obj_Property(workbooks,'add');
worksheets := client_ole2.get_obj_property(application,'worksheets');
worksheet := client_ole2.Get_Obj_Property(worksheets,'add');
client_ole2.set_property(worksheet,'Name','Emp Sheet');
end app_init;
procedure save_excel(path varchar,filename varchar) is
begin
client_OLE2.Release_Obj(worksheet);
client_OLE2.Release_Obj(worksheets);
-- Save the Excel file created
If path is not null then
Arglist := client_OLE2.Create_Arglist;
client_OLE2.Add_Arg(Arglist,path||'\'||file_name||'.xls');
client_OLE2.Invoke(workbook, 'SaveAs', Arglist);
client_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:','emp_data');
client_OLE2.Release_Obj(workbook);
client_OLE2.Release_Obj(workbooks);
client_OLE2.Release_Obj(application);
end;
最有可能的情况是,您缺少以下两个组之一中列出的文件:
,frmwebutil.jar
(也可能是jacob.jar
)frmall\u jinit.jar
目录中的文件\forms\java
,jacob-1.14.3-x86.dll
和jnisharedsubs.dll
d2kwut60.dll
目录中的文件C:\ProgramFiles(x86)\Java\jre1.8.0\u xxx\bin
C:\Oracle\u 10g
。如果它们不存在于该目录中,手动将它们移动到该目录就足够了
- 此外,它们最好以
CLASSPATH=C:\ORACLE\u 10g\forms\java\jacob.jar的形式包含在
CLASSPATH中;C:\ORACLE\u 10g\forms\java\frmwebutil.jar代码>
- 在添加时编辑文件
C:\ProgramFiles(x86)\Java\jre1.8.0\u xxx\lib\security\Java.policy
permission java.security.AllPermission代码>到文件底部
就在最后一个带分号的大括号之前}代码>
always
选项对它们进行签名