欢迎来到天天文库
浏览记录
ID:52880752
大小:615.62 KB
页数:3页
时间:2020-03-31
《润乾报表实现动态数据源报表及改进.pdf》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、润乾报表实现动态数据源报表及改进经常会遇到一些报表需要根据不同的情况(参数)连接不同的数据源从而完成相应的数据的展现,也就是经常说的动态数据源报表。报表工具通常的做法有两种,一是不同的情况加载不同的数据源连接参数,如:url、driver、username、password等;二是利用已配置的多个连接池,根据不同情况选择。这里通过一个实例,说明润乾报表的实现过程及改进方案。报表说明应用中需要通过参数控制报表连接的数据源,当参数flag为1时连接数据源一(db1),否则连接数据源二(db2)。润乾报表实现首先根据flag参数为conte
2、xt设置不同数据源(这里以两个hsql数据库为例):Stringflag=request.getParameter("flag");Connectioncon1=null;Connectioncon2=null;try{Driverdriver=(Driver)Class.forName("org.hsqldb.jdbcDriver").newInstance();DriverManager.registerDriver(driver);con1=DriverManager.getConnection("jdbc:hsqldb:hsq
3、l://localhost/runqianDB","sa","");con2=DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/demo","sa","");}catch(Exceptione){e.printStackTrace();}Contextcxt=newContext();StringdefDsName=cxt.getDefDataSourceName();if("1".equals(flag)
4、
5、"1"==flag){cxt.setConnection(d
6、efDsName,con1);}else{cxt.setConnection(defDsName,con2);}将cxt存入request:request.setAttribute("myContext",cxt);以context方式发布报表:通过使用润乾报表的API可以完成动态数据源报表,详尽的API的确为应用开发人员提供了诸多便利。不过,由于上面的做法我们看到都需要依赖Java编程,修改维护性很差,对一般报表开发维护人员都是不小
7、的挑战。这种情况下,如果采用润乾公司基于润乾报表引擎开发的集算报表,则可以非常方便完成动态数据源报表需求,集算报表内置了用于处理报表数据源准备的集算器,在集算器中编写处理动态数据源的代码比较简单。集算报表实现编写集算脚本使用集算脚本编辑工具完成计算脚本,并为报表输出计算后结果集:A1=connect(if(flag==1,"db1","db2"))=A1.query("SELECTorder_ID,order_Date,customer_ID,money,employee_IDFROM2salesDetailWHEREyear(ord
8、er_Date)=?ORyear(order_Date)=?ORDERBYorder_IDASC",orderDate,orderDate-1)3>A1.close()4resultA2A1:根据参数flag值决定连接哪个数据源(db1和db2为数据源名称)A2:执行sql取数A3:关闭连接A4:将结果集返回报表报表调用在集算脚本中处理动态数据源后,将结果输出给报表模板,报表模板使用时就好像在使用一个数据源一样,从而简化了报表开发。此外,集算器脚本允许用户分步编写计算逻辑,并且代码比较简单(相对Java和sql来说),从而提升了报表开
9、发和维护效率。
此文档下载收益归作者所有