Birt_报表参数的使用配置说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Birt 报表参数的使用
Birt 是一款非常流行的开源报表开发工具。本文总结了 Birt 报表中参数机制,并结合实例详细地阐述了参数的各种使用方法,最后介绍了 Birt 报表的源代码级使用。以期为 Birt 报表使用者提供一个有益的参考。
序言
参数是 birt 提供的一种很重要的机制,在 birt 中,参数具有变量的作用,它为 birt 报表的生成提供了一种灵活强大的机制。本文基于 Birt 2.1.2 讲述 Birt 报表中一些重要的用法以及 birt 源码级的参数使用机理,为报表开发者以及报表应用程序开发者提供一个参考。
本文的示例是基于 Birt RCP designer 2.1.2 开发的,在阅读本文前,最好有 eclipse 相关经验,并且已经能够使用 Birt 插件制作一些简单报表,并了解 Birt 报表的一些基本概念,比如 Data Source(数据源),Data Set(数据集)等。基本报表制作过程可见 developerworks 相关文章"BIRT:基于 Eclipse 的报表"。
本文示例使用 Birt 自带的 Sample 数据源,用到的数据基于图 1 所示的实体关系模型。从这个模型中可以看出,文中示例用到三张数据库表分别为 customers,orders 和 orderdetails。其中 customers 表的customernumber 字段作为外键出现在 orders 表中,而 orders 表的 ordernumber 字段做为外键出现在orderdetails 表中。
图 1. 实体关系模型
1 标量参数(Scalar parameter)
在使用 BIRT 参数的时候,首先要了解 BIRT 分为报表参数和数据集参数。报表参数定义于整个报表内,而数据集参数定义于某个数据集(Data Set)中。数据集参数使用的时候通常需要链接到某个报表参数或者利用绑定表(binding tab)和一个嵌套表中的某个数据元素绑定。
标量参数是Birt报表中最简单也是最基本的一类参数,标量参数可以分为静态和动态两种,其中静态参数从用户界面获得用户输入的数据值,而动态参数则可以关联至某一个数据集,因此可以获得一个数据的集合,供用户选择。下面分别介绍这两种参数。
1.1 静态标量参数
右键点击Outline面板中的Report parameter选项,在弹出的上下文菜单中点击“New parameter”,弹出图2所示编辑参数对话框,在name域输入参数的名字,本例中使用的参数名字为“customernum”,此时List of value项默认为static。点击OK后返回到开发主界面。
图 2. 编辑参数
接下来定义Data Set。Data Set定义的对话框如图3所示。在这个对话框中首先定义“Query”。我们可以看出Where条件中的customernumber字段通过”?”代表的参数传入参数值。
图 3. 数据集中的“查询”定义
点击”Parameter”,弹出在数据集中定义参数的对话框。数据集中的参数需要链接至某一个报表参数。在本例中将数据集参数链接至前面定义的报表参数customernum。点击OK,我们就完成了数据集中参数的定义。当报表运行时,Birt会使用由报表参数customernum传入的值填充where条件,生成结果数据集。如图4
所示。
图 4. 数据集中的“参数”定义
1.2 动态标量参数
动态参数可以提供一个数据值的列表供用户选择,这种功能能够极大增强报表设计用户界面的交互性。
在本例中,我们首先定义一个数据集,这个数据集不使用参数,它从订单表中查询出所有的订单号,为报表参数提供一个数据值的列表。如图5所示。
图 5. 数据集“ordernum”
接下来,我们定义报表参数,这个参数链接至前面的ordernum,因此可以根据数据集中的参数ordernum动态的获得可选值。如图6所示。
图 6. 报表参数“ordernumpara”
如图中所示参数的display type选成Como Box,List of value选择为Dynamic,其链接至的Data Set选择为前面定义的ordernum数据集,同时选定Select value column为数据集ordernum中的某个字段,这里ordernum数据集只有一个字段,故选择为ordernumber。这样就将报表参数和数据集参数关联起来。但这不是我们的最终目的,我们的目的是以报表参数ordernumpara为中介,向另一个数据集提供参数。因此,我们定义图7所示的数据集。
图 7. 数据集“ordersdetail”
点击“Parameter”项,进入数据集参数定义界面,如图8所示。
图 8. 将数据集内的参数连接至报表参数“ordernumpara”
将本数据集的参数num链接至ordernumpara,就完成藉由一个报表参数为中介将一个数据集的字段值链接到另一个数据集的参数的功能。
2 Cascading Parameter
除了使用动态报表参数提供数据值的选择列表,报表开发过程中用户经常需要用到互相关联的参数。比如要选择某个客户的某个订单号标识的所有订单的内容,用户并不愿意列出所有可能的订单号,比较理想的情况是给出一个客户编号的选择列表,根据这个列表的内容再给出每个客户的所有订单号的列表,这样用户就可以选择相应的客户对应的某个订单号,从而查询出此客户的这个订单号标识的所有订单的详细内容。Cascading parameter 一方面增强了报表逻辑的功能;另一方面,通过将一部分应用逻辑转移到界面操作上,进一步降低了报表内部逻辑和SQL查询语句的复杂性。
首先定义一个customer数据集,这个数据集包含customernumber和customername两个字段。如图9所示。