birt报表教程之嵌套报表


birt 报表教程之嵌套报表 嵌套报表 嵌套报表其实是一种设计技巧的应用,类似编码过程中的模块化设计。当 报表的复杂程度让设计者开始觉得逻辑混乱的时候,可以使用嵌套报表设计方 法,将报表拆分为多个不同的设计页面,然后使用一个总的页面将这些设计页面 整合起来展现。 此外,嵌套报表有时候也会用于主从结构的实现,通过逐层嵌套,可以实现 无限层次的主从结构数据展现。 本例,我们将每个客户的信息包括客户表中基本的信息以及他们的订单信 息,在同一张表中按客户一一列出来,所使用的就是嵌套报表。 报表名我们定为:nestingTab.rptdesign 构建数据源 本例我们使用 BIRT 自带的数据源,在新建数据源选择数据源类型为默认的 第一项:Classic Model Inc,Sample Database 数据库驱动类别;org.eclipse.birt.report.data.oda.sampledb.Driver (Classic Models Inc. SampleDB Driver);URL:jdbc:classicmodels:sampledb 构建数据集 本例我们需要建立 2 个数据集: 1. 建立数据集 payments,所用 SQL 语句:(这里我们加入条件选择订单大 于 150000) select CUSTOMERNUMBER,sum(AMOUNT) amount from CLASSICMODELS.PAYMENTS group by CUSTOMERNUMBER having sum(AMOUNT)>150000 order by amount desc 2. 建立数据集 customers:所用 SQL 语句: select * from CLASSICMODELS.CUSTOMERS where CLASSICMODELS.CUSTOMERS.CUSTOMERNUMBER = ? 输 入 SQL 语句后,还要在数据集编辑窗口选择 Parameters 选 项 。 双击默认参数 Pram1 或者选择“Edit”,弹出如下窗口: 输 入 : Name : CustID ; Default Value : 103 ; 其 它 默 认 完成后,在 Preview Result 选项中就可看见结果预览: 布局嵌套报表 1. 同上例,先在布局编辑器中建立一个 1 列 2 行的 Grid。 2. 从选用板“Palette”视图中拖拽一个 2 行 2 列“Table”至第二行的网格 中; 3. 选中 Table 的第一个“Detail Row”行,右键点击后选择“Merge Cells” 将本行两列合并为一列。本行用来显示主表的信息 4. 从选用板“Palette”视图中拖拽一个“Table”的至第二个“Detail Row” 行中的第一格中,设定其为 2 列 4 行。完成后将这个刚插入的子表的 “Header Row”和“Footer Row”删除掉。 5. 向主表的第二个“Detail Row”行的第二格进行与上一步同样的操作,插 入一个相同的子表。 第 4、5 两步所加的两个子表其实是用来加入客户信息的,所用到到的数据都 是 customers 数据集里的数据,这里用两个表来进行展现完全是为了整体布局 的美观。 布局配置完毕,布局编辑器中会呈现如下图: 将 Table 绑定数据集 1. 将 Table 绑 定 数 据 集 : 在布局编辑器中选中主表 Table,下方出现 Table 的属性编辑器 Property Edit,选中标题栏的 Binding 栏,从 Dat Set 中选择 payments 数据集。弹 出窗口选择“Yes”即可。点击“Ok”完成。 2. 设 定 排 序 : 接着在 Property Edit 编辑器中选中“Sorting”栏,点击“Add”添加排序 变量,从弹出窗口的下拉菜单中选择“CUSTOMERNUMBER”,即按照 编号排序,排序方法选择“Ascending”(升序)。点击“OK”完成。(读 者根据实际情况的需要可以通过同样的方法选择按照不同的变量来进行 排序) 设定主表数据 1. 加 入 网 格 : 从选用板“Palette”视图中拖拽一个 Grid 至主表 Table 的第一行“Detail Row”中,设定其为 4 列 1 行。 2. 插 入 数 据 : 展开选择 数据 资源管 理器“Data Explorer”,将 数据 集 payment 中 “CUSTOMERNUMBER”与“AMOUNT”两个数据项分别拖拽至我们 刚插入的 Grid 的第 2 格与第 4 格中。并将其格式都设定为居左。 3. 加 入 数 据 标 题 Lable 从选用板“Palette”视图中拖拽 Lable 至 Grid 的第 1 格与第 3 格中,分 别输入“客户号:”与“金额:”,并将其格式都设定为居右 设定好之后,视图如下: 设定子表数据 1. 设 定 参 数 绑 定 : 在布局编辑器中选中子表 Table,下方出现 Table 的特定编辑器 Property Edit,选中标题栏的 Binding 栏,在“”点击按钮“Dataset Parameter Binding”,进入后双击默认的变量进入进行设置,点击“Value”标签后 的函数符号“”,进入如下界面: 如图依次选择需要插入的数据,在第三个框中,双击“CUSTOMERNUMBER” 进行插入。依次点击“OK”,完成 对另外一个子表也需进行如上操作。 2. 插 入 数 据 展开选择数据资源管理器“Data Explorer”,将数据集 customers 中的 “CUSTOMERNAM”、“CITY”、“PHONE”、“ADDRESSLINE1” 拖拽至第一个子表 Table 的第二列中,将第一列的各个单元格同样拖拽进 去一个“Text”,分别输入子项标题“客户名”、“城市”、“电话”、 “ 住 址 ”。 然 后 将 数 据 集 customers 中 的 “POSTALCODE”、 “ ADDRESSLINE2 ”、“SALESREPEMPLOYEENUMBER”、 “CREDITLIMIT”拖拽至第二个子表 Table 的第二列中,将第一列的各 个单元格同样拖拽进去一个“Text”,分别输入子项标题“邮编”、“所 在住所”、“雇员号”、“余额” 这样整个嵌套报表的数据配置已经完毕,如果配置正确,布局将会如下: 结果预览: 同为比较常用的报表工具,FineReport 对嵌套报表的解决方案和实现方法 与 BIRT 有所不同,在 FineReport 中,嵌套报表被称为主子报表,以嵌入式主 子报表为例,讲述 FineReport 中嵌套报表的具体实现思路,供 BIRT 使用者借 鉴,如下: 1. 描述 嵌入式主子报表特点是在单元格中嵌入独立的报表模板,嵌入的模板称为子 报表,嵌入子报表后的整体称为主报表。 各子报表间格式可以不对齐,子表与主表的格式也可以不对齐,子报表能够 获取主表中的值。如下图员工销售一览表: 2. 示例 2.1 制作主报表 如下图设计主表:  添加参数 在主表中定义一个报表参数,参数名为销售员,通过参数查询某一个销售员 的个人信息及订单信息。 使用默认的参数界面,销售员参数控件选择下拉框,实际值为雇员表中的雇 员 ID,显示值为对应的姓名。具体可查看参数定义与参数面板制作章节。 2.2 添加不同参数的子报表  子报表 sub_1.cpt 说明 子 报 表 1:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\Ma sterReport\sub_1.cpt。 该子表中通过参数“ID”查询出对应销售员的个人信息。SQL 语句为:SELECT *FROM 雇员 where 雇员 ID = ${ID},表样为:  在主表中插入子表 1 右击主表 B3 单元格,单元格元素>插入子报表,弹出编辑子报表对话框,选 择子表 1 所在路径; 添加参数 ID(子表中的参数名称),值使用公式$销售员,将主表的销售员参数 值传递给子表 1 的 ID 参数,如下图设置: 2.3 添加相同参数的子报表  子报表 sub_2.cpt 说明 子 报 表 2:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\Ma sterReport\sub_2.cpt。 该子表中通过参数“销售员”查询出对应销售员的订单信息。SQL 语句为: SELECT*FROM 订单 where 雇员 ID = ${销售员},表样为:  在主表中插入子表 2 右击主报表 D5 单元格,单元格元素>插入子报表,弹出编辑子报表对话框, 选择子表 2 所在路径; 由于子表 2 的参数名与主表中的参数名相同,这时可以不设置传递参数,直 接选择继承报表的参数。 3. 保存与预览 保存模板,点击设计器中的分页预览,效果如上。
还剩11页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 5 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

fineiris

贡献于2015-05-05

下载需要 5 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf