分层次对数据分组

可以将报表中的数据分组,以便显示层次关系。分层次对数据进行分组时,Crystal Reports 会基于两个字段之间的关系对信息进行排序。层次关系必须是用于报表的数据中所固有的:

  • 父字段和子字段的数据类型必须相同,程序才能识别它们之间的关系。
  • 父字段中的数据必须是子字段中数据的子集。
  • 对于要出现在报表中的顶层层次结构,值必须出现在子数据中,并且父数据中的对应行必须为空。
  • 数据中不能有循环逻辑(也就是说,当 B 与 C 相关并且 C 反过来与 A 相关时,A 不能与 B 相关)。

例如,如果想显示某部门的层级结构,则可以根据雇员 ID 对数据分组,并使用列出雇员报表接收者的数据字段指定层级结构。

分层次对数据分组

  1. 在嵌入式 Crystal Reports 设计器中右击,指向“插入”,然后单击“组”。

  2. 在“插入组”对话框中,选择作为层次结构基础的字段(子字段)。

例如,如果要查看某家公司雇员的层次结构,请选择雇员字段。
  1. 选择“按升序”。
默认情况下,报表的组头将显示目前分组所依据字段的值。
  1. 如果想在组头中显示不同值,请单击“选项”选项卡,然后选中“自定义组名称字段”复选框。
例如,如果按雇员字段来分组,则每次更改组时您都将看到对应的雇员姓名。如果要显示另一个值(如雇员姓名来代替雇员 ID),请通过选择另一个数据字段或创建公式来自定义组名字段。
  1. 单击“确定”。
所创建的组添加到报表中。
  1. 在嵌入式 Crystal Reports 设计器中右击,指向“报表”,然后单击“层次分组选项”。

  2. 在“层次组选项”对话框的“可用组”列表中,选择要分层次排列的组。

  3. 选择“分层次对数据排序”复选框。

  4. 在“父 ID 字段”列表中,选择组织“实例 ID 字段”时所要基于的字段。

例如,对于雇员层次报表,可以选择列出雇员所属主管的数据字段。

<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/8yfdxzdx.alert_note(zh-cn,VS.90).gif" alt="Note" class="note" />注意</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>“实例 ID 字段”和“父 ID 字段”的数据类型必须相同。例如,如果“实例 ID 字段”存放字符串数据,则“父 ID 字段”也必须存放字符串数据。</p></td>
</tr>
</tbody>
</table>
  1. 在“组缩进”字段中,输入想让每个子组缩进的量。
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/8yfdxzdx.alert_note(zh-cn,VS.90).gif" alt="Note" class="note" />注意</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>您在“组缩进”字段中输入的值将影响与层次组处在同一区域中的所有其他对象。例如,如果报表在与雇员姓名相同的行中包含一个工资字段,那么,当您使用雇员字段来创建分层组时,工资字段也会被缩进。</p></td>
</tr>
</tbody>
</table>
  1. 单击“确定”。
报表数据即分层次分组。

<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/8yfdxzdx.alert_note(zh-cn,VS.90).gif" alt="Note" class="note" />注意</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>在此报表的层次结构中,某个姓名出现在哪个层次由向其报告的雇员的数量确定。那些没有下属的雇员处于层次结构的最低层。</p></td>
</tr>
</tbody>
</table>