免费报表工具FineReport多数据源报表.pdf
文本预览下载声明
免费报表工具FineReport 多数据源报表
简单多源报表
1. 描述
多数据源,就是在同一张报表当中,显示的数据来自于多个不同的表或不同的库。
如下图一张简单的多数据源报表,左侧蓝色部分来自于销量表,右侧黄色部分来自销售
总额表,即数据来自于两张不同的数据库表:
2. 示例
2.1 打开单个数据源报表
打 开 报
表%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\CrossReport\Cross.cpt。
2.2 新增数据源
再新增一个数据集ds2,其SQL 语句为SELECT * FROM [销售总额]。ds2 数据集与ds1
数据集都有一个销售员字段。
2.3 绑定数据列
如下图,将 ds2 中销售总额数据列拖拽到单元格中,并设置父格为销售员所在单元格,
使销售总额跟随销售员而扩展:
2.4 设置过滤
此时设计器预览,效果如下:
可以看到,扩展出来的每一个销售员下,都重复显示销售总额字段的所有数据。
虽然销售总额的父格为销售员数据列,由于他们来自于不同的数据集,因此销售总额不
会将父格销售员作为条件进行筛选,即不存在附属关系。
我们需要销售总额与销售员一一对应,就需要设置过滤条件,将这两个数据集的数据通
过销售员关联起来。
选中销售总额所在单元格,设置过滤,添加过滤条件:销售员 等于 C4,取出与 C4
单元格中销售员匹配的数据,如下图:
2.5 保存并预览
保存模板,预览报表,即可看到如上的效果。模板效果在线查看请点击Multi_1.cpt
已 完 成 的 模 板 , 可 参
见%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\Multidatasource\Multi_1.
cpt
3. 多数据源报表优势
多数据源报表传统的做法,是通过拼SQL 将多源整合为单源。如上例中将销量表与销售
总额表整合起来:SELECT * FROM 销量,销售总额 WHERE 销量.销售员 = 销售总额.销售员 。
若数据库表比较复杂,且使用的表个数不止2 张而是更多时,可以想象,最终的SQL 查询语
句将会非常复杂。
FineReport 天然支持多数据源的报表,一张报表中可以添加任意多个数据集,每个数据
集使用最简单的SQL 语句查询出需要的表数据,在报表中只需要使用过滤就可以将来自不同
表的数据相互关联起来。使得多数据源报表制作更加简单。
多源报表在线视频请查看 【多源报表】
复杂多源报表
1. 描述
上一节中,我们介绍了简单的多数据源报表,而实际应用时,交叉表当中的行列与汇总
计算数据,均来自不同数据库也是很常见的。如下报表:
在这张报表中,项目总数,需财政安排数,单位自筹,它资金都是来自于不同的数据集。
2. 示例
2.1 准备数据集
数据库的数据表是项目 ID 与项目名称有一张单独的表来保存,另有项目数量,财政补
贴资金,单位自筹资金,其它资金等四张列表。每张表均通过ID 字段与项目名称表建立关
系,以下是五张内置的数据集:
注:在数据集面板中点击添加按钮,选择内置数据集即可新建内置数据集,直接添加数
据,详细请查看内置数据集
项目名称(项目名称,ID)--project
项目总数(ID,项目总数)--zs
财政拨款(ID,金额)--cz
单位自筹(ID,金额)--dz
其它资金(ID,金额)--qt
2.2 表样设计
如下设计报表:
2.3 绑定数据列及过滤设置
将数据列依次拖拽到单元格中,设置如下:
单元
数据集 列名 设置
格
项目
B4 project 数据分组并从上到下纵向扩展,其它默认
名称
数据汇总求和,不扩展,过滤条件为“数据列”:ID
C4 zs 数量
显示全部