上一个主题下一个主题


教程 2:对报告数据进行分组

本教程提供关于按贷记限额对客户数据进行分组的指示信息。它从您在第一个教程教程 1:“构建简单列表报告”中构建的报告开始,您构建了一个按字母顺序列示客户的简单报告。在此报告中,您将客户编组成贷记限额为 $50,000.00 的组,如 0-49999、50000-99999、100000-149999 等等。

在开始本教程之前,您必须完成第一个教程。

在本教程中,您将执行下列任务:

任务 1:打开报告设计

在第一个教程中,您在项目文件夹“我的报告”中创建了 Customers.rptdesign。使用下列其中一个过程打开 Customers.rptdesign:

该文件将在布局编辑器中打开,如图 8-1 所示。

图 8-1 布局编辑器中的客户报告设计

任务 2:将报告另存为新文件

将 Customers.rptdesign 另存为新文件,而不是直接编辑在第一个教程中创建的报告。

  1. 选择“文件”->“另存为”。“另存为”将显示该文件的当前名称和位置。
  2. 对于文件名,将 Customers.rptdesign 更改为 Customers_grouped.rptdesign,然后选择“完成”。BIRT 报告设计器将生成 Customers.rptdesign 的副本。新的文件将出现在布局编辑器中。

任务 3:将贷记限额字段添加至数据集

为了使报告显示贷记限额数据,必须将贷记限额字段添加至数据集。

  1. 选择“数据资源管理器”。
  2. 展开“数据集”,然后双击 Customers。“编辑数据集”将显示 Customers 数据集的 SQL 查询。
  3. 在电话后面添加逗号(,)。
  4. 在下一行中,添加以下文本:
  5. creditLimit 
    
    修改的查询看起来应如图 8-2 所示。

    图 8-2 添加了贷记限额字段的查询
  6. 选择“预览结果”以验证查询是否返回包含贷记限额信息的行。
  7. 选择“确定”以保存数据集。

任务 4:将贷记限额数据添加至报告

在此过程中,将在现有表中插入贷记限额字段。

  1. 在布局编辑器中,选择一个表。指导单元格出现在该表的左上角。
  2. 右键单击第一列上方的指导单元格,然后选择“插入”->“左侧列”,如图 8-3 所示。
  3. 图 8-3 在现有列的左边插入一列
    将出现一个新列。
  4. 在“数据资源管理器”中,展开“数据集”,然后展开 Customers。 Customers 数据集将显示在查询中指定的字段。
  5. 将 CREDITLIMIT 字段从“数据资源管理器”中拖放到 [CUSTOMERNAME] 旁边的详细信息行单元格中。
  6. BIRT 报告设计器将创建一个绑定到数据集字段的指定列。“选择数据绑定”将显示此列绑定。
  7. 选择“确定”以接受缺省列绑定。
  8. 在布局编辑器中,该表将显示已添加的字段。它还显示布局编辑器自动添加至表头行的标签元素。此标签充当列标题,它将字段名显示为静态文本。报告看起来应如图 8-4 所示。

    图 8-4 在布局编辑器中添加贷记限额字段的结果
  9. 编辑 CREDITLIMIT 标签,以便它显示为贷记限额
  10. 预览该报告。报告看起来应如图 8-5 所示。
  11. 图 8-5 报告预览,它显示添加贷记限额的结果
    一些客户的贷记限额为 0。他们是尚未批准获得贷款额度的新客户。

任务 5:按贷记限额对客户数据进行分组

报告当前按客户名的字母顺序排序。请回想一下,在第一个教程中,您指定了按客户名对表中的行进行排序。在此过程中,您以 50,000 为间隔按贷记限额对数据进行分组。对数据进行分组时,BIRT 首先将行分类为组,然后对每组中的行进行排序(并假定还在标签级别指定了排序条件)。正如您所看到的那样,完成此任务后,每个贷记限额组内的数据行将按客户名进行排序。

  1. 选择“布局”以返回至布局编辑器。
  2. 右键单击表并选择“插入组”->“上方”。图 8-6 中的“新建组”显示可以设置的组属性。
  3. 图 8-6 新建组
  4. 遵循下列步骤以指定按贷记限额(间隔为 50000)进行分组:
    1. 对于“名称”,请输入以下文本作为组名:
    2. credit_group 
      
    3. 对于“分组依据”,请从下拉列表中选择 CREDITLIMIT。
    4. 对于“间隔”,请从下拉列表中选择“间隔”。
    5. 对于“范围”,请输入 50000。
    6. 对于其他选项,请使用缺省值。
    7. 选择“确定”。
    该表在报告设计中将显示组头行和组脚行,如图 8-7 所示。它还显示布局编辑器自动添加至组头行的数据元素。此数据元素充当组标题,并且在生成的报告中,它显示每组的第一个贷记限额值。

    图 8-7 报告设计中的组头行和组脚行
  5. 选择组头行中出现的 [CREDITLIMIT] 数据元素。不要选择详细信息行中出现的 [CREDITLIMIT] 数据元素。
  6. 在“属性编辑器”中,选择“常规”,然后选择 B 以将组标题格式化为粗体文本。
  7. 预览该报告。向下滚动报告以查看所有数据。如图 8-8 所示,该报告将数据编组成四个贷记限额组。在每组的开头,您将看到下列以粗体显示的数字:0、61100、113000 和 227600。这些数字与每组的第一个贷记限额值匹配。在每组中,客户按字母顺序排序。
  8. 图 8-8 报告预览,显示四个贷记限额组中的一个

任务 6:在组头中显示贷记限额范围

如果报告的组头中显示每组的贷记限额范围(如下所示),而不是显示每组的第一值,则该报告更容易浏览:

0 - 49999 
50000 - 99999 
100000 - 149999 

此过程显示如何编写 JavaScript 表达式以显示这些贷记限额范围。该过程还显示如何创建要与 JavaScript 表达式关联的列绑定。

  1. 选择“布局”以返回至布局编辑器。
  2. 选择表,然后选择“属性编辑器”上的“绑定”。
  3. 创建新的列绑定:
    1. 选择“添加”。
    2. 在表达式构建器中,输入以下表达式:
    3. for(i=50000; i<300000; i+=50000){ 
      if( row["CREDITLIMIT"] < i ){ 
        rangeStart = i-50000; 
        rangeEnd = i-1; 
        break; 
      } 
      } 
      displayString=rangeStart + " - " + rangeEnd; 
      
    4. 选择“确定”。新的列绑定将出现在“属性编辑器”的“绑定”页中,并且突出显示了列名。
    5. 将名称“新的绑定”替换为以下名称:
    6. CREDIT_GROUP_HEADER 
      
  4. 通过双击组头中的 CREDITLIMIT 数据元素、选择 CREDIT_GROUP_HEADER,然后选择“确定”来更新该数据元素以使用新的列绑定。
  5. 预览该报告。组头显示贷记限额范围。图 8-9 显示 50000 - 99999 组头。
  6. 图 8-9 报告预览,显示贷记限额范围

任务 7:显示聚集信息

对数据进行分组的其中一个好处是可以在每组的开头或末尾添加总结或聚集信息。在此过程中,您将完成下列任务:

  1. 选择“布局”以返回至布局编辑器。
  2. 显示每组中的客户数:
    1. 将选用板中的数据元素拖放到组脚行中的第一个单元格中。组脚中的元素将出现在每组的末尾。
    2. 在“选择数据绑定”上,创建新的列绑定:
      1. 在新行中的“名称”中,输入以下文本:
      2. GROUP_CUSTOMER_COUNT 
        
      3. 使用缺省数据类型“任何”。
      4. 在“表达式”中,输入以下聚集表达式:
      5. "Customers: " + Total.count() 
        
        Total.count( ) 返回行数。
      6. 使用缺省“聚集”值 credit_group。此值表示 Total.count( ) 函数返回每个贷记限额组中的行数。
      7. 选择刚刚创建的列绑定,然后选择“确定”。数据元素将使用选择的列绑定。
    3. 预览该报告。报告将在每组的末尾显示客户数,如图 8-10 所示。
    4. 图 8-10 报告预览,显示每组的计数
  3. 选择“布局”以返回至布局编辑器。
  4. 显示所有客户数:
    1. 选择表。
    2. 指导单元格出现在该表的左上角。
    3. 右键单击第一行“表 - 头”左边的指导单元格,然后选择“插入”->“行”->“上方”。
    4. 显示列标题的行的上方将出现一个新的表头行。它显示为彩色,因为它继承了后面的行的属性。
    5. 选择此新行,然后在“属性编辑器”中将它的背景色更改为白色。
    6. 将选用板中的数据元素拖放到新表头行中的第一个单元格中。表头中的元素将出现在该部分的开头。
    7. 在“选择数据绑定”上,创建新的列绑定:
      1. 在新行中的“名称”中,输入以下文本:
      2. TOTAL_CUSTOMER_COUNT 
        
      3. 使用缺省数据类型“任何”。
      4. 在“表达式”中,输入以下聚集表达式:
      5. "Number of customers: " + Total.count() 
        
      6. 使用缺省“聚集”值“全部”。此值表示 Total.count( ) 函数返回整个表中的行数。
      7. 选择刚刚创建的列绑定,然后选择“确定”。数据元素将使用选择的列绑定。
    报告设计看起来应如图 8-11 所示。

    图 8-11 报告设计,显示客户的总计数
  5. 预览该报告。报告将在表的开头显示客户数,如图 8-12 所示。
  6. 图 8-12 报告预览,显示总客户数

任务 8:格式化报告

既然报告显示正确的数据,您可侧重于改进报告的外观。在本节您将执行下列任务:

除去详细信息行中的贷记限额数据

为了验证数据是否出现在正确的贷记限额组中,显示每个客户的贷记限额很有用。既然我们已经验证了数据,就可以从报告中删除各条贷记限额信息。

  1. 选择“布局”以返回至布局编辑器。
  2. 从详细信息行中删除 [CREDITLIMIT] 数据元素。
  3. 预览该报告。它看起来应如图 8-13 所示。
  4. 图 8-13 报告预览,每行中没有贷记限额数据

在每组的第一行中显示组标题

贷记限额组标题出现在它们自己的行中,即在每组的详细信息行上方。在此过程中,您将删除组标题,以便它们出现在第一个详细信息行中。

  1. 选择“布局”以返回至布局编辑器。
  2. 选择包含组标题的单元格,如图 8-14 所示。确保选择的是单元格而不是单元格中的数据元素。
  3. 图 8-14 选择的组标题单元格
  4. 在“属性编辑器”的“常规”属性中,设置“删除至详细信息”。在报告设计中,组标题将出现在详细信息行上方,因为从技术上讲,元素仍在组头行中。
  5. 在“属性编辑器”的“边距”属性中,将“边距 - 顶部”设置为 12 磅。此设置使得组标题与详细信息行的数据更准确地对齐。请记住,在第一个教程中,我们向详细信息行单元格的顶部添加了 12 磅边距。
  6. 预览该报告。组标题将出现在每组的第一行中,如图 8-15 所示。
  7. 图 8-15 报告预览,显示已删除的组标题

用一行分隔每组

绘制一行以分隔每组,以便更容易看到组数据。

  1. 选择“布局”以返回至布局编辑器。
  2. 选择组脚行中的所有单元格。要选择多个单元格,请在单击时按住 Shift 键。
  3. 在“属性编辑器”中选择“边框”,然后设置边框属性:
    • 将“样式”设置为实线。
    • 选择显示下边框的按钮。
  4. 在行与行上方的文本之间添加更多空格。在单元格仍处于选中状态的情况下,选择“属性编辑器”中的“边距”属性,并将“底部”设置为 6.0 磅。
  5. 预览该报告。每组的末尾将出现一行,如图 8-16 所示。
  6. 图 8-16 报告预览,在各组之间显示一行

任务 9:在 BIRT 报告查看器中预览报告

到目前为止,您一直在 BIRT 报告设计器预览器中检查报告输出。此时,您将使用报告查看器来查看报告在部署时具有的外观。报告查看器提供了其他功能,包括使用目录浏览至报告的特定部分的功能。在报告中创建组时,BIRT 将通过使用组值显示报告的层次结构来自动生成目录。

  1. 选择“文件”->“在 Web 查看器中查看报告”。
  2. 报告将出现在报告查看器中。

  3. 选择“目录”按钮(窗口顶部左边的按钮)以显示目录。
  4. 目录将显示四个贷记限额组中每个组的第一个值。选择一个值时,报告将显示其中的相应部分。例如,如果选择 61100,则报告将显示 50000 - 99999 贷记限额范围中的客户行,如图 8-17 所示。

    图 8-17 选择目录中的一个值以查看相应的数据

任务 10:在目录中显示贷记限额范围

如果目录显示与报告相同的贷记限额范围值,而不是显示每个贷记限额组中的第一个值,则目录将更有意义。您可以通过使用先前用来在组头中显示贷记限额范围(0 - 49999、50000 - 99999 等)的那个 JavaScript 表达式来完成此任务。

  1. 返回至 BIRT 报告设计器。
  2. 在布局编辑器中,选择表,然后在“属性编辑器”中选择“组”选项卡。
  3. 双击组列表中的 credit_group。
  4. “编辑组”显示组的属性。缺省情况下,“TOC 项表达式”设置为分组字段 row["CREDITLIMIT"]。
  5. 选择省略号(...)按钮,在表达式构建器中,将 row["CREDITLIMIT"] 表达式替换为以下表达式。这就是组头中的数据元素使用的那个列绑定表达式。可以从数据元素中复制该表达式并将它粘贴在此处,而不必再次输入它。
  6. for(i=50000; i<300000; i+=50000){ 
    if( row["CREDITLIMIT"] < i ){ 
      rangeStart = i-50000; 
      rangeEnd = i-1; 
      break; 
    } 
    } 
    displayString=rangeStart + " - " + rangeEnd; 
    
  7. 选择“确定”。
  8. 在报告查看器中预览报告以验证目录中的更改。
  9. 目录显示贷记限额范围,如图 8-18 所示。

    图 8-18 已更新的目录


(c) Copyright Actuate Corporation 2006

上一个主题下一个主题