如何复用多个报表的数据源

在报表项目中,经常有多个报表的数据源计算方法有共同的部分。使用润乾集算报表,采用可挂接算法的方案时(参见http://blog.raqsoft.com.cn/?p=644),可以更方便地将这些共同部分用同一个脚本来完成,从而实现算法复用。算法复用的好处是:一个算法只实现一次,不会出现同一个算法多处实现导致不一致的情况。同时也避免一个算法实现很多次的重复劳动,减轻工作量。

下面通过两个报表复用同一个算法的例子来看一下具体的实现方法。报表1是“员工绩效工资明细表”,可以按照STATE来选择不同的员工例如:STATE=="California" 或者STATE=="Texas",如下图:

报表2是“部门绩效工资汇总表”(全体员工,不按照STATE过滤),如下图:

报表1、2都要计算员工的绩效工资,算法是比较复杂的。如果两个报表都实现一遍这个计算,会有两个问题:一个是重复工作费时费力,另一个是一旦计算方法发生改变,就要修改两个地方,可能会出现不一致。使用集算报表可以用一个计算脚本来编写绩效工资算法,实现两个报表复用一个脚本。

集算报表还可以完成动态表达式解析,所以可以接收非常灵活的过滤条件或者其他表达式。集算引擎的参数定义如下图:

集算报表的计算脚本(salary.dfx)如下:

A3:判断过滤条件是否为空,如果为空就不执行过滤B3。

B3:按照条件过滤。这里使用宏来实现动态解析表达式,其中的where就是传入参数。集算器先计算${…}里的表达式,将计算结果作为宏字符串值替换${…}之后解释执行。这个例子中最终执行的是:[email protected](STATE=="California" || STATE=="Texas")。

A13单元格是将结果返回给报表页面。A4到A13之间是绩效工资的计算方法,不是本文重点,这里不详细介绍。如果where= STATE=="California" || STATE=="Texas"。A13的返回结果如下:

如果where=””,A13的返回结果如下:

报表1的模板设计如下图:

报表1数据集ds1定义如下:

虽然报表内容、样式不同,但是两个报表的数据集都调用一个共同的脚本文件。如果将来绩效工资的计算方法发生变化,只要修改salary.dfx即可,报表1、2的模板文件不用改变。

时间: 2024-11-05 16:34:09

如何复用多个报表的数据源的相关文章

润乾集算报表多样性数据源之混合多源

多样性数据源在报表开发中越来越常见,润乾集算报表对多样性数据源的有效支持使得这类报表开发变得非常简单,目前集算报表支持的数据源类型除传统的关系型数据库外,还支持:TXT文本.Excel.JSON.HTTP.Hadoop.mongodb等. 在集算报表中除了单独使用以上数据源,还可以混合使用.支持混合多数据源是集算报表多样性数据源的又一表现.下面通过一个实例说明使用过程. 报表说明 员工每月应发工资跟员工的基本工资.考勤以及绩效有关,考勤信息来源于人力部门从考勤系统中导出的文本文件,基本工资和绩效

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

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

主子报表多数据源的处理

主报表和子报表(或Table表)使用不同的数据库时.JasperReport/Birt等报表工具从功能上可以处理,但在子报表中无法直接使用数据源名,需要使用显式的数据库账号.口令.可以看到这种方式存在一定的安全隐患,而且实施过程比较复杂. 集算器具有结构化强计算引擎,支持多样性数据源,集成简单,可以协助报表工具方便地实现此类需求,下面通过一个例子来说明主子报表多数据源的实现过程. 表emp在MySQL数据库中,存储员工信息,主键是EId.表sales在MSSQL中,存储员工的订单信息,字段Sel

润乾集算报表优化应用结构之报表复杂数据源的管理

在报表项目中,常常有些复杂数据计算是为一个报表专用的,其它报表用不到.可以用SQL实现写进报表数据源中,但由于SQL无法分步计算,经常会写出非常复杂难懂的长语句,不利于调试和维护.如果用Java或者存储过程来实现,计算程序会和报表模板又会分开,不利于管理.使用润乾集算报表的脚本数据集来实现报表专用计算,既可以写出简单易懂的分步骤计算脚本,又可以将脚本存放在报表模板中利于管理.系统结构的对比如下图: 下面通过一个具体的报表例子来看一下集算报表脚本数据集的用法.<年度客户销售分析报表>可以选择年份

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

多样性数据源在报表开发中越来越常见,润乾集算报表对多样性数据源的有效支持使得这类报表开发变得非常简单,目前集算报表支持的数据源类型除传统的关系型数据库外,还支持:JSON.HTTP.TXT文本.Excel.Hadoop.mongodb等. JSON作为一种轻量级数据格式应用非常广泛,报表读取json数据源进行报表开发的需求也很常见,另外有些报表还会接收来自HTTP服务器的数据进行报表展现.这里通过例子分别来看一下集算报表使用json数据源和http数据源的过程. 一般JSON数据源 报表说明 学

报表多样性数据源之MongoDB

MongoDB等nosql数据库具有易扩展和高性能等优势,但计算能力比传统SQL要弱,例如MongoDB的分组结果不能太大,且不直接支持join运算等,而集算报表内置的计算引擎再正好可以补充这一点,在获得MongoDB的优势的同时还拥有较强的计算能力. 我们通过一个分组实例来了解一下集算报表使用MongoDB数据源开发报表的过程. 报表说明 学生成绩信息存储在MongoDB中,包含班级.姓名.成绩.科目等信息,成绩表(score)数据内容如下: 现根据学生信息汇总总成绩,并排名.以下为实现步骤:

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

多样性数据源在报表开发中越来越常见,润乾集算报表对多样性数据源的有效支持使得这类报表开发变得非常简单,目前集算报表支持的数据源类型除传统的关系型数据库外,还支持:TXT文本.Excel.JSON.HTTP.Hadoop.mongodb等. Excel作为一种常见的文件格式广泛存在,很多报表的数据来源于Excel.由于报表一般都带有参数,经常需要对原始数据进行分组.过滤等,都需要再编写程序代码才能满足有参数报表的查询需求.这里通过一个例子介绍集算报表使用Excel数据源制作报表的步骤. 报表说明

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

多样性数据源在报表开发中越来越常见,润乾集算报表对多样性数据源的有效支持使得这类报表开发变得非常简单,目前集算报表支持的数据源类型除传统的关系型数据库外,还支持:TXT文本.Excel.JSON.HTTP.Hadoop.mongodb等. mongodb等nosql数据库具有易扩展和高性能等优势,但计算能力比传统SQL要弱(如mongodb的分组结果不能太大,且不直接支持join运算等),而集算报表内置的计算引擎再正好可以补充这一点,在获得mongodb的优势的同时还拥有较强的计算能力. 这里通

润乾集算报表多样性数据源之文本文件

多样性数据源在报表开发中越来越常见,润乾集算报表对多样性数据源的有效支持使得这类报表开发变得非常简单,目前集算报表支持的数据源类型除传统的关系型数据库外,还支持:TXT文本.Excel.JSON.HTTP.Hadoop.mongodb等. 这里通过两个例子介绍集算报表使用文本数据源制作报表的步骤,对于小文本文件和大文本文件在集算报表中可以采用不同的方式进行处理. 小文本文件 报表说明 股票交易记录按月以文本形式存储,文件名为stock_record_yyyyMM.txt(如stock_recor