请指导如何在运行时更改输出PDF文件名
我在参数形式触发器之后使用下面的代码,但它不起作用:
:DESNAME:=' INVOICE _' ||:P_CLIENT ||' .PDF';
请指导我..
答案 0 :(得分:0)
您没有提到您使用的报告版本;用于创建报告的最多6i程序称为“Reports Builder”,而更高版本使用名称“Reports Developer”。并不重要,但是 - 如果您打开Reports Online帮助系统(导航到“帮助”菜单)并搜索DESNAME,您将找到可用于设置DESNAME值的可执行文件。其中 RWBUILDER 不。是的, rwbuilder 是Builder和/或Developer的EXE名称。
这意味着你运气不好,至少关于你试图设置DESNAME值的方式。您无法在任何报告的触发器中设置它。我的意思是,你可以,但它不会产生任何影响。
但是,如果您从例如Oracle Forms开发的表单调用报表,那么您可以使用 RWRUN ,其中可以指定DESNAME值,是的,你可以动态地创建它。
有关更多信息,请阅读我之前指出的帮助。
答案 1 :(得分:0)
在从Forms中调用Reports的几种方法中,我建议您使用RP2RRO.pll添加到您的表单:
您可以通过以下代码致电您的报告:
Pr_Print_Rp2Rro('Rep_Invoice','|Prm1|Prm2|','|'||:Prm1||'|'||:Prm2||'|','no','INVOICE_'||:P_Client||'.PDF');
假设您有两个用户定义的参数,即:Prm1
& Prm2
。 Pr_Print_Rp2Rro
是一个包含以下代码的过程:
Procedure Pr_Print_Rp2Rro(
i_rep_name varchar2,
i_prm_name varchar2,
i_prm_val varchar2,
i_param_frm varchar2, -- 'Yes','No'
i_desname varchar2,
i_destype varchar2 default 'FILE'
) Is
plist ParamList;
arr_prm_name owa.vc_arr;
arr_prm_val owa.vc_arr;
Begin
plist := Get_Parameter_List('REPPARAM');
if not Id_Null(plist) then
Destroy_Parameter_List('REPPARAM');
end if;
plist := Create_Parameter_List('REPPARAM');
Add_Parameter(plist, 'PARAMFORM', Text_Parameter, i_param_frm);
Rp2rro.SetDestype(i_destype);
Rp2rro.SetDesname(i_desname);
for i in 1..100
loop
arr_prm_name(i) := substr(i_prm_name,instr(i_prm_name,'|',1,i)+1,instr(i_prm_name,'|',1,1+i)-instr(i_prm_name,'|',1,i)-1);
arr_prm_val(i) := substr(i_prm_val,instr(i_prm_val,'|',1,i)+1,instr(i_prm_val,'|',1,1+i)-instr(i_prm_val,'|',1,i)-1);
if length(arr_prm_name(i)) > 0 then
Add_Parameter( plist, arr_prm_name(i) , Text_Parameter, arr_prm_val(i) );
end if;
end loop;
Rp2rro.Rp2rro_Run_Product(Reports, i_rep_name, Synchronous, Runtime,Filesystem, plist,null);
End ;
您可能已经注意到,此过程包含一个方法Rp2rro.SetDesname(i_desname)
,除非您将Destype
参数设置为{{1},否则您可以使用该方法管理您的任务以创建特定于您客户的报告名称}。