水晶报表java_月光软件站 - 编程文档 - Java - 使用水晶报表JRC(Java Report Component)在Unix下实现实时报表...

这篇博客主要介绍了如何在Java环境下使用水晶报表的Java组件JRC在Unix系统下实现实时报表,包括参数传递问题的解决、Oracle存储过程的创建、部署到WebLogic+HP UX时遇到的问题及其解决方案。
摘要由CSDN通过智能技术生成

目前网上关于水晶报表比较多的是.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是这样定义的

CREATEORREPLACEPACKAGEReportrealtimedataset

AS

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

NAME:ReportRealTimeDataSet

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

REVISIONS:

VerDateAuthorDescription

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

1.02005-02-20goubo1. Created this package.

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

/*定义ref cursor类型

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

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

*/

TYPEmyrctypeISREFCURSOR;

PROCEDUREgetTestResultSet(staffidINTEGER,p_rcINOUTmyrctype);

/*

自定义过程

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

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

@s_date查询条件,起始日期

@e_date查询条件,结束日期

*/

PROCEDUREgetdataset(conditionVARCHAR2,s_dateDATE,e_dateDATE);

/*

自定义过程

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

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

@s_date查询条件,起始日期

@e_date查询条件,结束日期

*/

PROCEDUREgetdatasetnum(conditionVARCHAR2,s_dateDATE,e_dateDATE);

/*

取营业帐分类清单结果集

@param s_date:统计起始日期

@param e_date:统计结束日期

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

*/

PROCEDUREgetchargedetail(

s_dateDATE,

e_dateDATE,

departmentVARCHAR2,

WORKGROUPVARCHAR2,

STAFFVARCHAR2,

p_rcINOUTmyrctype

);

/*

取个人营业帐分类结果集

@param s_date:统计起始日期

@param e_date:统计结束日期

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

@param business:业务

*/

PROCEDUREgetstaffproc(

s_dateDATE,

e_dateDATE,

STAFFVARCHAR2,

BUSINESSVARCHAR2,

p_rcINOUTmyrctype

);

/*

取营业受理量结果集清单

@param s_date:统计起始日期

@param e_date:统计结束日期

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

*/

PROCEDUREgetacceptdetail(

s_dateDATE,

e_dateDATE,

departmentVARCHAR2,

WORKGROUPVARCHAR2,

STAFFVARCHAR2,

p_rcINOUTmyrctype

);

/*

取个人营业受理量结果集

@param s_date:统计起始日期

@param e_date:统计结束日期

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

@param business:业务

*/

PROCEDUREgetstaffprocnum(

s_dateDATE,

e_dateDATE,

STAFFVARCHAR2,

BUSINESSVARCHAR2,

p_rcINOUTmyrctype

);

/*

取班组营业帐分类结果集

@param s_date:统计起始日期

@param e_date:统计结束日期

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

@param business:业务

*/

PROCEDUREgetworkgroupproc(

s_dateDATE,

e_dateDATE,

WORKGROUPVARCHAR2,

BUSINESSVARCHAR2,

p_rcINOUTmyrctype

);

/*

取班组营业受理量结果集

@param s_date:统计起始日期

@param e_date:统计结束日期

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

@param business:业务

*/

PROCEDUREgetworkgroupprocnum(

s_dateDATE,

e_dateDATE,

WORKGROUPVARCHAR2,

BUSINESSVARCHAR2,

p_rcINOUTmyrctype

);

/*

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

@param s_date:统计起始日期

@param e_date:统计结束日期

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

@param business:业务

*/

PROCEDUREgetdepartproc(

s_dateDATE,

e_dateDATE,

departmentVARCHAR2,

BUSINESSVARCHAR2,

p_rcINOUTmyrctype

);

/*

取班组营业受理量结果集

@param s_date:统计起始日期

@param e_date:统计结束日期

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

@param business:业务

*/

PROCEDUREgetdepartprocnum(

s_dateDATE,

e_dateDATE,

departmentVARCHAR2,

BUSINESSVARCHAR2,

p_rcINOUTmyrctype

);

/*

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

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

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

*/

FUNCTIONgencondition(INSTRVARCHAR2)

RETURNVARCHAR2;

ENDReportrealtimedataset;

/  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的文件名不能是中文。必须是英文才能正确识别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值