润乾报表实现动态数据源报表及改进

经常会遇到一些报表需要根据不同的情况(参数)连接不同的数据源从而完成相应的数据的展现,也就是经常说的动态数据源报表。报表工具通常的做法有两种,一是不同的情况加载不同的数据源连接参数,如:url、driver、username、password等;二是利用已配置的多个连接池,根据不同情况选择。这里通过一个实例,说明润乾报表的实现过程及改进方案。

报表说明

应用中需要通过参数控制报表连接的数据源,当参数flag为1时连接数据源一(db1),否则连接数据源二(db2)。

润乾报表实现

首先根据flag参数为context设置不同数据源(这里以两个hsql数据库为例):

String flag=request.getParameter("flag");

Connection con1 = null;

Connection con2 = null;

try{

Driver driver = (Driver)Class.forName("org.hsqldb.jdbcDriver").newInstance();

DriverManager.registerDriver(driver);

con1=DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/runqianDB","sa","");

con2=DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/demo","sa","");

}catch (Exception e){

e.printStackTrace();

}

Context cxt=  new Context();

String defDsName =cxt.getDefDataSourceName ();

if ("1".equals(flag) || "1"==flag){

cxt.setConnection(defDsName,con1);

}else{

cxt.setConnection(defDsName,con2);

}

将cxt存入request:

request.setAttribute("myContext", cxt );

以context方式发布报表:

<report:htmlname="report1"

contextName=”myContext”

/>

通过使用润乾报表的API可以完成动态数据源报表,详尽的API的确为应用开发人员提供了诸多便利。不过,由于上面的做法我们看到都需要依赖Java编程,修改维护性很差,对一般报表开发维护人员都是不小的挑战。

这种情况下,如果采用润乾公司基于润乾报表引擎开发的集算报表,则可以非常方便完成动态数据源报表需求,集算报表内置了用于处理报表数据源准备的集算器,在集算器中编写处理动态数据源的代码比较简单。

集算报表实现

编写集算脚本

使用集算脚本编辑工具完成计算脚本,并为报表输出计算后结果集:

A1:根据参数flag值决定连接哪个数据源(db1和db2为数据源名称)

A2:执行sql取数

A3:关闭连接

A4:将结果集返回报表

报表调用

在集算脚本中处理动态数据源后,将结果输出给报表模板,报表模板使用时就好像在使用一个数据源一样,从而简化了报表开发。此外,集算器脚本允许用户分步编写计算逻辑,并且代码比较简单(相对Java和sql来说),从而提升了报表开发和维护效率。

润乾报表实现动态数据源报表及改进

时间: 2024-08-29 17:36:03

润乾报表实现动态数据源报表及改进的相关文章

润乾报表使用json数据源的方法改进

JSON作为一种轻量级数据格式应用非常广泛,报表读取json数据源进行报表开发的需求也很常见.润乾报表使用json数据源需要在自定义数据集中通过Java程序解析json文件后将结果集返回给报表,这里介绍润乾报表的实现方式以及改进方法. 报表需求 学生成绩在应用中以json文件存在,现需要根据学科参数查询指定科目学生成绩,并按学生成绩降序排列.报表样式如下: 润乾报表实现 自定义数据集 润乾报表中需要通过自定义数据集完成json文件的读取,实现过程如下: 1.  准备json解析依赖包 Java程

用脚本实现报表的动态数据源

报表系统中有一些报表往往要根据条件连接不同的数据源,从而完成报表展现.这种需要在不同数据源间切换的情况我们称为动态数据源.一般报表工具实现动态数据源往往要依靠第三方程序(JAVA等)实现,润乾集算报表则可以通过内置的脚本完成,本文将通过一个例子来了解实现过程. 报表说明 学生信息中通过参数控制报表连接的数据源,参数status为1时连接数据源一(dev_1),否则连接数据源二(dev_2),按班级汇总学生总成绩. 在集算报表中,通过集算脚本完成参数的判断,连接不同的数据源:然后在报表模板中使用脚

RDLC报表之动态生成报表

首先,必须感谢和致敬蜡人张前辈: http://waxdoll.cnblogs.com/archive/2006/02/25/337713.html 2.微软GotReportViewer官方的案例: http://www.gotreportviewer.com/(约有20来个,很详细.有时候会上不了) ) 前段时间,做了RDLC报表,主要是三块功能: 1.从DataGrid提取数据,然后创建对应的RDLC报表文件,以利用ReportViewer类的打印排版的功能(其中做了个提取数据的通用函数,

润乾集算报表多样性数据源之动态源

多样性数据源在报表开发中越来越常见,润乾集算报表对多样性数据源的有效支持使得这类报表开发变得非常简单,目前集算报表除了支持不同类型的数据源(RDB.TXT文本.Excel.JSON.HTTP.Hadoop.mongodb)外,还可以根据实际应用情况动态连接不同的数据源完成动态数据源报表的开发.下面通过一个简单实例说明使用过程. 报表说明 应用中需要通过参数控制报表连接的数据源,当参数flag为1时连接数据源一(xmos1),否则连接数据源二(xmos2),查询指定年份到现在的订单情况. 在集算报

润乾报表 动态改变数据源

经常会遇到一些报表需要根据不同的情况(参数)连接不同的数据源从而完成相应的数据的展现,也就是经常说的动态数据源报表. 实现动态数据源有多种方法:具体说两种使用过的方法:第一种:使用脚本集算器法 使用集算脚本编辑工具完成计算脚本,并为报表输出计算后结果集: A1:根据参数dbname参数值决定数据源 A2:编写查询SQL A3:执行sql取数 A4:关闭连接 A5:将结果集返回报表 优点:开发简单,理解方便.缺点:必须 集算器授权 第二种:TAG标签1.导包 1 <%@ page import=&qu

润乾报表使用EXCEL数据源的方法及改进

Excel作为一种常见的文件格式广泛存在,很多报表的数据来源于Excel.由于报表一般都带有参数,经常需要对原始数据进行分组.过滤等,都需要再编写程序代码才能满足有参数报表的查询需求. 润乾报表使用Excel数据源,需要用Java程序处理文件,通过自定义数据集为报表提供数据源支持.这里通过一个实例说明润乾报表实现过程,以及改进方式. 报表描述 基金公司将股票信息以每月一个Excel存储,命名方式为:stock_yyyyMM.xls.包括每只股票的股票编码.交易日期和收盘价,现报表参数为起始年月和

润乾报表的组成和变迁

产品发展 润乾公司在润乾报表3.x中首次应用了非线性报表模型,并在该版本的实践过程中积累了丰富的工程化经验.在这些基础上开发出的润乾报表5.x,实现了理论模型和工程实践的完美结合,不仅保持原有的开发高效性,运算性能指标也有了大幅度提高,成为一款经典的报表工具软件. 产品在应用过程中不断有新的需求加入,而且在完善过程中也难以对仍在快速积累中的需求进行深入梳理,润乾报表5.x逐步发展成融合了固定报表.自助报表和填写表单这三项主要功能的庞大体系. 随着应用经验的进一步丰富,我们逐渐意识到,报表工具的这

多数据源报表解析之简单多源报表

多数据源报表即一张报表中可以定义多个数据集,分别取出需要的数据库表,所取的数据库表甚至可以来自于不同的数据库.本文通过几个例子说明多个数据集数据如何相互关联来实现多源报表. 1. 描述 多数据源,就是在同一张报表当中,显示的数据来自于多个不同的表或不同的库. 如下图一张简单的多数据源报表,左侧蓝色部分来自于销量表,右侧***部分来自销售总额表,即数据来自于两张不同的数据库表: 2. 示例 2.1 打开单个数据源报表 打开报表%FR_HOME%\WebReport\WEB-INF\reportle

润乾集算报表多样性数据源之动态SQL传递

大多数情况下报表的数据源SQL都是固定的,但有时也需要动态变动其中某些部分实现动态拼出,比如在报表应用中允许用户通过选择表和字段查询自己关心的报表数据,报表开发时则希望对同类报表(明细或汇总)使用同一模板.这时就需要在报表中接收相应参数拼接出动态SQL进行查询后制作动态报表. 润乾集算报表提供了两种处理动态SQL的方法,使用宏和集算脚本,可以快速完成这类报表,下面举例说明. 使用宏 集算报表提供了宏机制,通过在动态宏中拼接SQL后交由数据集查询结果,最后在报表中使用动态表达式获得字段名和字段值完