birt创建分组报表

日期:2015-04-03点击次数:8675

内容:
1. 分组的建立、插入、删除
首先构建报表,空白模板,示例数据库和sql查询数据源,数据集setOrders,如下
 
查看数据集查询结果:
 
我们要先以客户名称分组,再以订单号分组:
那么我们在布局好了普通网格报表之后,在详细行上右击,选择插入分组
首先插入分组grpCustomerName,分组依据CUSTOMERNAME,目录的项目表达式为:row["CUSTOMERNAME"] + ": $(" + row["CUSTOMERTOTAL"].toFixed(2) + ")USD"
 
3. 设置分组的属性:
Ø 输入该分组的名称:该名称唯一标识该组,而且该名称会出现在右键菜单“编辑组”当中,您可以非常方便的编辑指定的组。
Ø 选择分组依据:在下拉框中给您列出了当前表所绑定的所有列,这些列可以不在表中显示。选择数据集上的可用列作为一个分组或者用表达式生成器去构建一个数据绑定作为分组依据
Ø 设置分组间隔:您可以设置一种分组间隔类型,然后指定分组间隔值。关于如何设置间隔,请参考后面小节“按间隔分组数据”。
Ø 设置是否要隐藏详细信息:您可以选中该复选框来隐藏表格当中的明细信息,从而只显示组头或组尾的汇总数据。
Ø 设置目录的项目表达式:项目表达式:指定目录的标题的表达式,可以选择数据集上的可用列作为一个分组或者用表达式生成器去构建一个数据绑定作为分组依据,样式用来指定标题的样式
Ø 设置排序方向:选择数据分组后,各组按升序还是降序排列。
Ø 设置分页:您可以设置报表在什么位置分页。如果您想让每组数据都在单独的页面上显示,那么您可以在组之前或之后设置一下分页。
Ø 设置筛选:您可以添加一个或多个筛选对组中的数据进行筛选。
Ø 设置排序:您可以设置组内数据的排序。
 
Ø 排序方向:用于指定分组的排序
Ø 换页:用于指定换页之后是否重复标题
Ø 排序与过滤:用于指定排序的依据和过滤的依据
我们再插入分组grpOrderNumber,分组依据ORDERNUMBER,目录的项目表达式 为:"Order Number: " + row["ORDERNUMBER"] + "\n$(" + row["ORDERTOTAL"].toFixed(2) + ")USD"
 
做适当的布局:
 
其中:
TOTALSALE绑定:dataSetRow["QUANTITYORDERED"] * dataSetRow["PRICEEACH"]
ORDERTOTAL绑定:Total.sum(row["TOTALSALE"])
CUSTOMERTOTAL绑定:Total.sum(row["TOTALSALE"])
做适当的页面美化,我们就能看到这样的预览效果
 
2.分组的排序与过滤
如果没有添加排序依据,那么就依据默认的排序单选进行排序
 
如果添加有排序依据,则会覆盖默认的排序依据:
 
其中,分组的键可以用分组依据,也可以用表达式生成器构建;
方向可以是升序或是降序;
语言环境选自动即可;
排序依据必须是和分组依据一一关联的,不能是多对一,比如本分组不能使用row["ORDERDATE"],否则排序依据失效;
有多个排序依据时则依照sql的排序依据顺序执行;
过滤器: 
 
其中筛选条件中的表达式生成器可以是分组的字段,也可以是表达式生成器生成的
注意的是过滤依据必须是和分组依据一一关联的,不能是多对一,比如本分组不能使用row["ORDERDATE"],否则过滤依据失效;
这样我们就筛选出销售额前3名的客户分组。
我们还可以构建多个筛选条件。
3.分组的间隔,聚合,可视性,映射,突出显示,书签
当您创建分组时,BIRT报表默认是按每个分组依据值来分组数据的,比如一个客户名,一个国家名,或者一个日期。在前面我们创建的客户信息 表中,BIRT报表将每个国家作为一组,在每组下面列出这个国家所有客户信息。有时按指定的间隔来分组数据更加有用。比如说一张销售报表可以按季度来分组 销售数据,而不是按照详细的日期分组。同样您也可以按周或月来分组发货报表,而非按照详细的日期。
比较下面两张报表,第一张将订单信息按详细的日期分组,而第二张报表则按月份来分组订单信息。
 
 
通过上面两张报表您可以看到,有些时候设置分组间隔能够更好的组织数据,更加便于用户查看:
Ø 设置分组间隔可以将很长的报表分隔成为许多短小的,更便于阅读的“块”。
Ø 设置分组间隔可以对该间隔期的数据进行汇总,更便于分析。
下面详细的介绍如何设置分组依据为字符串、数值与时间日期的分组间隔
Ø 设置字符串的分组间隔
当您设置分组字符串数据的分组间隔时,该分组间隔是一个特定长度的字符串前缀。比如将客户信息按客户名分组,您可以按照客户名的第一个字母,前两个字母等来分组。
一般情况下,报表在显示名字/名称列表时,会按名字/名称的第一个字母来分组。比如一张客户信息表,我们会将客户信息按它们名称的第一个字母来分 组,名称以A 开头的客户分为一组,以B 开头的客户分为一组,以此类推。您还可以设置多个字母间隔来对字符串分组,来将那些名称里面包含多个特定字母的 前缀按这个前缀分组。比如一个产品名称中,可能开头两个字母表示供应商,如ME, MO 等,那么我们就可以按前两个字母前缀来对产品名称分组。下面就是 我们按一个字母前缀、两个字母前缀、三个字母前缀来对客户名称分组的例子。
 
Ø 设置字符串分组间隔
1. 首先按前面小节中介绍的步骤来创建分组,分组依据为字符串类型。
2. 在间隔中设置“前缀”,
3. 在“区域”中设置需要按前几个字符作为前缀来对字符串分组。
我们建立数据集customer:
select CLASSICMODELS.CUSTOMERS.CUSTOMERNAME,CLASSICMODELS.CUSTOMERS.CONTA CTLASTNAME,CLASSICMODELS.CUSTOMERS.PHONE,CLASSICMODELS.CUSTOMERS.ADDRESS LINE1,CLASSICMODELS.CUSTOMERS.CITY,CLASSICMODELS.CUSTOMERS.STATE,CLASSICMODE LS.CUSTOMERS.COUNTRY,CLASSICMODELS.CUSTOMERS.CREDITLIMIT
from CLASSICMODELS.CUSTOMERS
 
 
 
当您对数值数据分组时,您也可以设置分组间隔。比如您制作订单信息表时,当订单号为数值型时,可以按订单号每50 个、100 个、1000 个等来分组。
在设置数值数据的分组间隔时,您需要考虑该数值的范围来设定这个间隔。如果数值的范围从100 至200,那么分组间隔可以设置为10;如果数值范围从100 至1000 时,那么分组间隔可以设置为100。
下图给您显示了数值数据按 10、100 和1000 间隔来分组的例子:
 
在您设置了数值数据的分组间隔后,BIRT报表是按照数据返回的第一个值来计算并分组的。比如第一个数值是1070,如果您设置的分组间隔是10, 那么第一组数据则是1070-1079,第二组数据是1080 至1089,以此类推。在上图的例子中当分组间隔为1000 时,您可以看到2005 和 2030 也被分在了第一组中,因为您数值的第一个值是1070。在很多情况下这可能不是您想要的结果。
前面说到,BIRT报表是按照返回数据的第一个值作为基准值来计算并分组的。当然您可以设置这个基准值。您可以在分组时设置分组间隔的基数,让BIRT报表用您设置的值来作为基数来计算分组。下图就是设置分组间隔基数与否的区别:
 
Ø 设置数值数据的分组间隔
1. 按照前面小节的步骤创建分组。
2. 在间隔中选择“间隔”对数值设置分组间隔。
3. 在区域中设置分组间隔数值,如10,100 等。
4. 如果您需要指定分组间隔的基数,那么选中“对间隔使用固定基值”复选框,并在下面 的输入框中输入该基值。
 
5. 点击“确定”,预览报表结果。下图就是我们对订单信息表按照订单号来分组,并将分 组间隔设置为10 的结果:
 
当您设置日期时间数据的分组间隔时,您可以把日期以小时、天、周、月、年为间隔进行分组。设置日期时间数据的分组间隔对于按时间显示的信息来说非常有帮助,比如我们常见的日报、周报、月报、季度报、年报等。
下图展示了按日期分组,分别以周、月、季度为分组间隔的报表。每周从周一开始,每月从当月的第一天开始,季度分别从1 月1 日至1 月 31 日,4 月1 日至6 月30 日,7月1 日至9 月30 日,10 月1 日至12 月31 日。如果您以年为分组间隔,则从一年的1 月 1 日至当年的12 月31 日为一组。
 
如果不想使用BIRT报表日期时间数据的默认分组间隔,可以指定自己的分组基值与间隔区域。比如一个企业的财年是从10 月1 日至次年的 9 月30 日,那么在统计近10 年该企业的财务年报时,则可以基于自己的年报起止日期来设定分组,而非使用日历意义上的年报设置。比如您可以设置分 组基值为1999 年10 月1 日,分组间隔为年,那么BIRT报表就会将1999 年10 月1 日至2000 年9 月30 日分为第一 组,2000 年10 月1 日至2001 年9 月30 日为第二组,以此类推。
Ø 设置日期时间的分组间隔
1. 按照前面小节介绍的步骤创建分组,分组依据为日期时间类型。
2. 选择分组间隔,您可以选择秒、分钟、小时、天、周、月、季度和年。
3. 在“区域”中设置一个数值,指定每多少间隔作为一组。比如您选择分组间隔为周,区 域数值设置为2,那么BIRT报表就会每2 周的数据作为一组。
4. 如果您需要设置分组的基值,那么选中“对间隔使用固定基值”,并在下面输入区域中 设置基值。
 
5. 点击“确定”,预览报表结果。下图是对客户订单信息按日期分组,并设置分组间隔为 月的结果。
 






软件部         张毅

姓名:
性别:
电话:
E-mail
问题:
问题描述: