使用水晶报表JRC(Java Report Component)在Unix下实现实时报表

原创 2005年02月27日 21:15:00
   目前网上关于水晶报表比较多的是.NET下的讨论,而在JAVA下的讨论相对较少,这次一个项目中购买了水晶报表(CE,CR)来实现报表部分。我们的平台是WebLogic+HP Unix+Oracle9i,开发平台是Weblogic+WindowXP+oracle9i,对于普通报表是布署到CE上,从前台应用中直接调用即可,而报表的数据生成是每天定时调用存储过程从生产系统库上挖掘数据到统计数据库,但是对于实时报表部分CE就无能为力,因为需要直接从生产系统抓数据,所以我采用了JRC10(Java Report Component来实现的,下面是在开发调试过程中的一些问题及解决办法。
一、在开发平台上向报表传递参数时,一直出现""Some parameters are missing values"。
  JRC的Sample有问题,正确的参数传递应该是这样的:(来自
http://support.businessobjects.com/library/kbase/articles/c2015264.asp)
 ParameterField paramField = new ParameterField();
 
paramField.setReportName("");
... 
而它的例子中是没有上面红色的这一句。
二、ORACLE中处理
   1、因为需要返回动态结果集,在Oracle中存储过程无法做到,所以定义一个Package来实现,Package是这样定义的

CREATE OR REPLACE PACKAGE Reportrealtimedataset

AS

/******************************************************************************

   NAME:       ReportRealTimeDataSet

   PURPOSE:    营业分类帐实时报表生成Package定义部分

 

   REVISIONS:

   Ver        Date        Author           Description

   ---------  ----------  ---------------  ------------------------------------

   1.0        2005-02-20    goubo         1. Created this package.

******************************************************************************/

/* 定义ref cursor类型

    不加return类型,为弱类型,允许动态sql查询,

    否则为强类型,无法使用动态sql查询;

*/

   TYPE myrctype IS REF CURSOR;

  

   PROCEDURE getTestResultSet(staffid INTEGER,p_rc IN OUT myrctype);

  

   /*

   自定义过程

   根据输入条件生成查询结果分类帐

   @param condition 查询条件(f.handlestaff in (6004,6005) ..etc)

   @s_date 查询条件,起始日期

   @e_date 查询条件, 结束日期

   */

   PROCEDURE getdataset (condition VARCHAR2, s_date DATE, e_date DATE);

 

   /*

   自定义过程

   根据输入条件生成查询结果受理量

   @param condition 查询条件(f.handlestaff in (6004,6005) ..etc)

   @s_date 查询条件,起始日期

   @e_date 查询条件, 结束日期

   */

   PROCEDURE getdatasetnum (condition VARCHAR2, s_date DATE, e_date DATE);

 

  /*

    取营业帐分类清单结果集

    @param s_date:统计起始日期

    @param e_date:统计结束日期

    @param staff: 统计对象(个人),workgroup 班组 department 部门

   

   */   

   PROCEDURE getchargedetail (

      s_date                DATE,

      e_date                DATE,

      department            VARCHAR2,

      WORKGROUP             VARCHAR2,

      STAFF                 VARCHAR2,

      p_rc         IN OUT   myrctype

   );

  /*

    取个人营业帐分类结果集

    @param s_date:统计起始日期

    @param e_date:统计结束日期

    @param staff: 统计对象(个人)

    @param business: 业务

   */

   PROCEDURE getstaffproc (

      s_date              DATE,

      e_date              DATE,

      STAFF               VARCHAR2,

      BUSINESS            VARCHAR2,

      p_rc       IN OUT   myrctype

   );

    /*

    取营业受理量结果集清单

    @param s_date:统计起始日期

    @param e_date:统计结束日期

    @param staff: 统计对象(个人),department 受理部门 workgroup:受理班组?    @param business: 业务

   */

   PROCEDURE getacceptdetail (

      s_date                DATE,

      e_date                DATE,

      department            VARCHAR2,

      WORKGROUP             VARCHAR2,

      STAFF                 VARCHAR2,

      p_rc         IN OUT   myrctype

   );

 

   /*

    取个人营业受理量结果集

    @param s_date:统计起始日期

    @param e_date:统计结束日期

    @param staff: 统计对象(个人)

    @param business: 业务

   */

   PROCEDURE getstaffprocnum (

      s_date              DATE,

      e_date              DATE,

      STAFF               VARCHAR2,

      BUSINESS            VARCHAR2,

      p_rc       IN OUT   myrctype

   );

  

 

   /*

    取班组营业帐分类结果集

    @param s_date:统计起始日期

    @param e_date:统计结束日期

    @param workgroup: 统计对象(班组)

    @param business: 业务

   */

   PROCEDURE getworkgroupproc (

      s_date               DATE,

      e_date               DATE,

      WORKGROUP            VARCHAR2,

      BUSINESS             VARCHAR2,

      p_rc        IN OUT   myrctype

   );

 

   /*

    取班组营业受理量结果集

    @param s_date:统计起始日期

    @param e_date:统计结束日期

    @param workgroup: 统计对象(班组)

    @param business: 业务

   */

   PROCEDURE getworkgroupprocnum (

      s_date               DATE,

      e_date               DATE,

      WORKGROUP            VARCHAR2,

      BUSINESS             VARCHAR2,

      p_rc        IN OUT   myrctype

   );

 

   /*

     取班组营业帐分类部门结果集

     @param s_date:统计起始日期

     @param e_date:统计结束日期

     @param workgroup: 统计对象(部门)

     @param business: 业务

    */

   PROCEDURE getdepartproc (

      s_date                DATE,

      e_date                DATE,

      department            VARCHAR2,

      BUSINESS              VARCHAR2,

      p_rc         IN OUT   myrctype

   );

 

   /*

     取班组营业受理量结果集

     @param s_date:统计起始日期

     @param e_date:统计结束日期

     @param workgroup: 统计对象(部门)

     @param business: 业务

    */

   PROCEDURE getdepartprocnum (

      s_date                DATE,

      e_date                DATE,

      department            VARCHAR2,

      BUSINESS              VARCHAR2,

      p_rc         IN OUT   myrctype

   );

 

   /*

    自定义函数,根据instr,生成相应的条件输出

   @param instr='6004/6005/6006' or 'null'

   @return 'in (6004,6005,6006)' or ''

   */

   FUNCTION gencondition (INSTR VARCHAR2)

      RETURN VARCHAR2;

END Reportrealtimedataset;

/

  2、在Oracle中定义一个会话型的全局临时表(Create Global Temporary table rp_yy_business_accept ()

ON COMMIT PRESERVE ROWS,在每个方法中直接使用这个临时表返回数据即可。(注意为了减少Redo,需要将Oracle9i补丁打到9.2.0.5,参见http://blog.csdn.net/eygle/archive/2004/07/04/33499.aspx)

三、布署到生产系统(weblogic+hp ux时的问题)时出现“Unable to connect to an X11 window server using ":0.0" as DISPLAY variable value”而在开发系统无此问题。

  需要在启动weblogic时指定启动项 Djava.awt.headless=true ,参见http://support.businessobjects.com/library/kbase/articles/c2016832.asp
四、布署到生产系统(Unix)时老出 ""Some parameters are missing values"而在开发系统(windows)无此问题
 
 rpt的文件名不能是中文。必须是英文才能正确识别。
 

  需要在启动weblogic时指定启动项 Djava.awt.headless=true ,参见http://support.businessobjects.com/library/kbase/articles/c2016832.asp
四、布署到生产系统(Unix)时老出 ""Some parameters are missing values"而在开发系统(windows)无此问题
 
 rpt的文件名不能是中文。必须是英文才能正确识别。
 







 

水晶报表(Crystal Report)通过Visual Studio 2010的WPF实现

1,前言。      本文中采用的工具介绍: VS2010旗舰版,CrystalReport版本为13.0 。实现的方式是做一个简单demo,让初学者能够初步了解水晶报表的使用。     ...

水晶报表(crystal report)--回忆

水晶报表(Crystal Reports)是加拿大Crystal Decisions公司创建的报表分析与生成软件,2003年被BO收购,而BO在2008年初又被SAP收购。水晶报表可谓是多次易主,但由...

水晶报表 Crystal Report 调用存储过程时出错 找不到表 ,解决方法。

用 CrystalReportViewer1 控件在asp.net的网页上显示报表,如果做报表时调用数据表数据的方式调用是可以成功的,但报表是用存储过程获取数据方式会出现以下错误: 找不到表...

Crystal Report水晶报表碰到的一些纠结问题

1.插入PNG文件时,透明的背景会变成黑色.试了矢量图WMF文件,是可以正常显示的,不过毕竟得到矢量图比较困难.   后来找到个方法,就是把JPG图片放在子报表里,调整子报表在父报表的位置并且保持JP...
  • sui84
  • sui84
  • 2014年01月17日 16:51
  • 2168

Crystal Report水晶报表教程

  • 2008年04月04日 20:04
  • 3.63MB
  • 下载

vs2005水晶报表程序在vs2008下正常使用的一些实现方法

没有安装部署好水晶报表;(vs2008安装后,不等于安装了vs2008水晶报表) 二、源程序中:VS2008和v2005的水晶报表版本号不对;vs2008的版本号是:Version=10.5.37...

水晶报表Crystal Report 2008 用户指南

  • 2008年06月27日 21:26
  • 2.34MB
  • 下载

VC++ D2D呈现水晶报表并实时刷新

VC中使用D2D呈现水晶报表,并实时刷新
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用水晶报表JRC(Java Report Component)在Unix下实现实时报表
举报原因:
原因补充:

(最多只允许输入30个字)