Java报表开发FineReport教程:[11]多源分片

多源就是一张报表的数据来源来自多个数据表,甚至是多个物理数据库。这里的“多个”常常不是两个三个,而是七八个乃至十几个,无法转成单源;

分片是指一张报表的纵向或横向或双向同时被分成了多个区域,往往每个区域来自不同的数据源;

这样的报表即多源分片报表,如下图:


Java报表开发FineReport教程:[11]多源分片

工具/原料

Java报表开发FineReport电脑

方法/步骤

 思路设计

多源分片报表通常有比较复杂的横表头与纵表头,在设计多源分片报表时,可以先将表头设计好,最后设计中间部分的数据,此时只需要设置好对应的关联过滤即可,最后进行模板数据字典等显示设置;

另外一种快速制作多源分片报表的方法是每片单独设计,如上图报表,可以先设计分片1,确认无误后再设计分片2,如此类推,同样最后进行模板数据字典等显示设置。

 准备数据

连接数据库FRDemo,新建四个数据集,数据集名分别为雇员、产品、订单信息和订单对应的sql语句如下:

雇员的SQL语句: SELECT 雇员ID,职务 FROM 雇员

产品的SQL语句: SELECT 产品ID,类别ID FROM 产品 where 类别ID =1 or 类别ID =2

订单信息的SQL语句: SELECT 订单.订单ID,雇员ID,产品ID,数量,(数量*单价) AS 总额 FROM 订单,订单明细 WHERE 订单.订单ID=订单明细.订单ID

订单的SQL语句: select * from 订单

 表样设计

最终表样如下:

分片1制作

分片1按国家与雇员进行分组统计,中间数据受左表头与上表头双重控制:

单元格数据集数据列属性

B4订单货主国家默认

C4订单雇员ID默认

E2产品类别ID从左到右扩展,其余默认

E3产品产品ID从左到右扩展,其余默认

E4订单信息总额汇总求和,添加过滤条件 雇员ID(列序号:2) 等于 'C4' and 产品ID(列序号:3) 等于 'E3'

E5订单信息数量汇总求和,添加过滤条件 雇员ID(列序号:2) 等于 'C4' and 产品ID(列序号:3) 等于 'E3'

分片2制作

分片2直接统计总额与数量,中间数据只受上表头控制:

单元格数据集数据列属性

E6订单信息总额汇总求和,添加过滤条件 产品ID(列序号:3) 等于 'E3'

E7订单信息数量汇总求和,添加过滤条件 产品ID(列序号:3) 等于 'E3'

分片3制作

分片3按照雇员职务与雇员进行分组统计,中间数据受左表头与上表头双重控制:

单元格数据集数据列属性

B8雇员职务默认

C8雇员雇员ID默认

E8订单信息总额汇总求和,添加过滤条件 雇员ID(列序号:2) 等于 'C8' and 产品ID(列序号:3) 等于 'E3'

E9订单信息数量汇总求和,雇员ID(列序号:2) 等于 'C8' and 产品ID(列序号:3) 等于 'E3'


Java报表开发FineReport教程:[11]多源分片

形态设置

最后我们根据需要,设置数据的显示样式、形态、颜色等。

对C4,C6,E2和E3单元格作形态数据字典设置,都采用数据库表的方式,具体设置如下表:

单元格数据库数据表列名(实际值)列名(显示值)

C4FRDemo雇员雇员ID姓名

C6FRDemo雇员雇员ID姓名

E2FRDemo产品类型类型ID类别名称

E3FRDemo产品产品ID产品名称

保存与预览

保存模板,设计器中点击分页预览,就可看到如上效果。模板效果在线查看请点击Multi_3.cpt

已完成的模板,可参见%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\Multidatasource\Multi_3.cpt。

Java报表开发FineReport教程(共15篇)上一篇:复杂报表|下一篇:重复显示

相关内容

  1. Java报表开发插件FineReport:[11]多源分片

    多源就是一张报表的数据来源来自多个数据表,甚至是多个物理数据库.这里的"多个"常常不是两个三个,而是七八个乃至十几个,无法转成单源:分片是指一张报表的纵向或横向或双向同时被分成了多个区域,往往每个区域来自不同的数据源:这样的报表即多源分片报表,如下图:工具/原料Java报表开发插 ...

  2. 报表开发工具FineReport:[11]多源分片

    多源就是一张报表的数据来源来自多个数据表,甚至是多个物理数据库.这里的"多个"常常不是两个三个,而是七八个乃至十几个,无法转成单源:分片是指一张报表的纵向或横向或双向同时被分成了多个区域,往往每个区域来自不同的数据源:这样的报表即多源分片报表,如下图工具/原料报表开发工具:Fin ...

  3. Java报表开发FineReport教程:[12]重复显示

    动态重复标题行,是指在报表数据分多页显示时,通过重复报表标题的设置,将左表头或上表头重复显示在每一页当中.如下:第一页:第二页:工具/原料Java报表开发FineReport电脑方法/步骤打开报表打开报表%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advan ...

  4. Java报表开发FineReport教程:[10]复杂报表

    上一节中,我们介绍了简单的多数据源报表,而实际应用时,交叉表当中的行列与汇总计算数据,均来自不同数据库也是很常见的.如下报表:工具/原料Java报表开发:FineReport电脑方法/步骤准备数据集数据库的数据表是项目ID与项目名称有一张单独的表来保存,另有项目数量,财政补贴资金,单位自筹资金,其它 ...

  5. Java报表开发插件FineReport:[10]复杂多源

    上一节中,我们介绍了简单的多数据源报表,而实际应用时,交叉表当中的行列与汇总计算数据,均来自不同数据库也是很常见的.如下报表:在这张报表中,项目总数,财政拨款,自有资金及其它资金都是来自于不同的数据集.工具/原料Java报表开发插件:FineReport电脑方法/步骤准备数据集数据库的数据表是项目I ...

  6. 表格制作软件FineReport教程:[7]多源报表

    FineReport报表天然支持多数据源报表.一张报表中可以定义多个数据集,分别取出需要的数据库表,所取的数据库表甚至可以来自于不同的数据库.下面就通过表格制作软件FineReport来简单介绍一下.工具/原料表格制作软件FineReport7.1.1大小:148.2M 适用平台:windows/l ...

  7. 数据分析软件FineReport教程:[23]多源报表

    FineReport报表天然支持多数据源报表.一张报表中可以定义多个数据集,分别取出需要的数据库表,所取的数据库表甚至可以来自于不同的数据库.下面就通过数据分析软件FineReport来简单介绍一下.工具/原料数据分析软件FineReport7.1.1大小:148.2M 适用平台:windows/l ...

  8. Java报表开发FineReport教程:[9]多源报表

    多数据源,就是在同一张报表当中,显示的数据来自于多个不同的表或不同的库.如下图一张简单的多数据源报表,左侧蓝色部分来自于销量表,右侧黄色部分来自销售总额表,即数据来自于两张不同的数据库表:工具/原料Java报表开发:FineReport电脑方法/步骤打开单个数据源报表打开报表%FR_HOME%\We ...

  9. Java报表开发插件FineReport:[12]重复显示

    动态重复标题行,是指在报表数据分多页显示时,通过重复报表标题的设置,将左表头或上表头重复显示在每一页当中.如下:第一页:第二页:工具/原料Java报表开发插件:FineReport电脑方法/步骤打开报表打开报表%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Ad ...