返回列表 回复 发帖

如何从FORM中调用REPORT程序?

在菜单中调用REPORT程序(不传参数,传参数可用下面的程序段)
Run_Product(REPORTS, '报表程序名.REP', SYNCHRONOUS, RUNTIME, FILESYSTEM, '', NULL);

在FORM中调用REPORT程序(可传参数)
  1. DECLARE
  2. pl_id ParamList;
  3. BEGIN
  4. pl_id := Get_Parameter_List('参数列表名');
  5. IF NOT Id_Null(pl_id) THEN
  6. Destroy_Parameter_List( pl_id );
  7. END IF;
  8. pl_id := Create_Parameter_List('参数列表名');
  9. Add_Parameter(pl_id,'REPORT参数名1',DATA_PARAMETER,':FORM项名1');
  10. Add_Parameter(pl_id,'REPORT参数名2',TEXT_PARAMETER, :FORM项名2);
  11. … …
  12. Run_Product(REPORTS, '报表程序名.REP', SYNCHRONOUS, RUNTIME, FILESYSTEM, pl_id,
  13. NULL);
  14. END;
复制代码
2005年4月发起成立ERP100.com社区。希望更多的朋友能够融入到ERP100这个大家庭。
努力值相关制度请参考http://bbs.erp100.com/thread-29183-1-1.html
个人空间:http://zonghengsihai.erp100.com
联系方式:huwanjun@baidu.com 13911575376 QQ:27675401
行业:互联网
模块:财务,人力资源,订单,合同,预算,BI(Discoverer)。
主要工作:需求分析,系统设计,项目管理,部门协调。
技术:pl/sql java Oracle 等
所在公司:百度(中国)有限公司 www.baidu.com (2004年6月~至今)
工作地点:北京

B/S模式下FORM调用REPORT例子

环境WINXP    DEV9I
B/S模式下FORM调用REPORT例子:

DECLARE
   v_RepObjID                REPORT_OBJECT;
   v_RepSvrJobID                VARCHAR2(200);
   v_JobID                        VARCHAR2(200);
   v_RepSvrName                VARCHAR2(200);
   v_ParamListID                PARAMLIST;
   v_ParamListName                        VARCHAR2(200);
   v_WhereClause                VARCHAR2(200);
   v_url                                       varchar2(100);
BEGIN
   v_ParamListName := 'emp_list';
   v_ParamListID := Get_Parameter_List(v_ParamListName);
   IF NOT Id_Null(v_ParamListID) THEN
      Destroy_Parameter_List(v_ParamListID);
   END IF;
   v_ParamListID := Create_Parameter_list(v_ParamListName);
   add_parameter(v_ParamListID,'p_deptno',text_parameter,:main.dept);
   if :main.check_name = 1 then   
    v_RepObjID := Find_Report_Object('emp');
   else
           v_RepObjID := Find_Report_Object('MODULE2');
   end if;
   v_RepSvrName := 'REPSERVER';   --report服务器
   Set_Report_Object_Property(v_RepObjID, REPORT_SERVER, v_RepSvrName);
   SET_REPORT_OBJECT_PROPERTY(v_RepObjID,REPORT_DESTYPE,CACHE);     --报表目标类型
   SET_REPORT_OBJECT_PROPERTY(v_RepObjID,REPORT_DESFORMAT,'htmlcss');  --报表目标格式
   v_RepSvrJobID := Run_Report_Object(v_RepObjID, v_ParamListID);
   v_JobID := SUBSTR(v_RepSvrJobID, LENGTH(v_RepSvrName)+2);
   v_url := '/reports/rwservlet/getjobid'||v_JobID||'?server='||v_RepSvrName;
   IF v_JobID <> '0' THEN
      Web.show_document(v_url,'_blank');
   ELSE
      MESSAGE('ERROR!');
      RAISE FORM_TRIGGER_FAILURE ;
   END IF;
END;

以下是9IDS环境配置,希望对大家有所帮助!

1.Forms程序位置设定  
设定所有应用程序目录、程序包目录、对象库目录  

方法一:  
设置Forms90_Path环境变量,默认值:\OraHome1\forms90  
不足之处:程序库链接必须使用绝对路径,不能使用相对路径。系统移植时,可能会有问题<WINDOWS环境移植到UNIX环境>  

方法二:  
在REGEDIT中,配置OraHome1选项下的Forms90_Path子项。  
此方法解决系统移植时的程序库链接问题  
方法三:  

在我的电脑属性中环境变量中配置  
此方法同方法一  
注:Forms90_path如果有配置程序目录,则REGEDIT和我的电脑属性中的相关配置值失效。建议仅在一个地方配置,避免困扰。  

2.报表环境配置  

2.1安装报表服务器  
方法:进入命令模式,c:\>rwserver –install <report server>,系统提示“到控制面板中启动报表服务”。  
注:<Report Server>的名称可以自由定义。  

2.2启动报表服务器  
方法:进入“控制面板”-“管理工具”-“服务”,启动报表服务。  

2.3修改报表服务器配置文件  
方法:打开\OraHome1\reports\conf\rwservlet.properties文件  
配置项如下:  
SERVER_IN_PROCESS=NO  
RELOAD_KEYMAP=NO  
SERVER=repserver  
SINGLESIGNON=NO  

2.4设定报表文件目录  
方法:打开\OraHome1\reports\conf\rwservlet.properties文件  
设定Reports_path变量值:系统默认为\Oraclehome1\reports\integ  
注:所有报表RDF文件,应存放于设定的报表文件目录下
是偶想要的也,谢咯
好好学习下
保存了 :/kuk :/kuk :/kuk
活着要对得起家人和自己!
返回列表