6.1.3  水晶报表排序、分组技术<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

报表数据的预设排列顺序会与数据库中的数据记录的存放顺序相同,因此会毫无规则且不会依照任何顺序来排列。 Crystal Reports 提供 记录排序专家 对话框来完成对报表数据的排序,如图 6.7 所示。

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

6.7  记录排序专家

记录排序专家 对话框打开后,从 可用字段 列表中将要排序的字段移至右侧 排序字段 列表中,然后选择单选按钮 升序 降序 ,以便对此字段进行 升序 降序 排序。

在指定排序字段时,应注意以下事项。

l          所有的字段都可以作为排序字段,包括数据库字段与公式字段。

l          用来排序的字段不一定要出现在报表上,不过一般来说,排序的目的是为了让报表上的数据明显地依照特定的顺序排列,所以排序字段最好是出现在报表上的字段。

如果以 文本 类型字段作为排序字段来 升序 排序,数据将依下列顺序来排列。

l          空白

l          标点符号

l          0~9

l          A~Z( 相同字母者,大写排在前,小字排在后 )

l          中文字符按其拼音字母 A~Z 的顺序来排序

如果以 文本 类型字段作为排序字段来 降序 排序,则正好与上述的顺序相反。

如果以 日期 / 时间 类型字段作为排序字段来 升序 排序,则空日期时间排在最前,然后较早的日期时间排列在前,较晚的日期时间排列在后。 降序 排序则正好相反。

如果以 数字 货币 类型字段作为排序字段来 升序 排序,则较小的数值排列在前,较大的数值排列在后。 降序 排序则正好相反。

如果以 布尔值 类型字段作为排序字段来 升序 排序,则 True 会排列在前, False 排列在后。 降序 排序则正好相反。

排序能够使报表中相同的数据排列在一起打印,但如果想让数据更加层次分明,并且根据针对各组的数据进行分析、统计、运算,则必须将报表中的数据进行分组。 Crystal Reports 允许根据数据库字段或公式字段来分组报表中的数据记录,而且还允许进行嵌套组、层次分组与自定义组等功能,以上功能通过 Crystal Reports 提供一系列的对话框, 插入组 对话框、 组专家 对话框、 层次组选项 对话框。

1 插入组 对话框

插入组 对话框,主要是完成对报表分组的各项设置。在 Report for Visual Studio.NETk 中启用 插入组 对话框,有以下两种方法。

l          使用鼠标单击工具栏的 插入组 按钮 ,如图 6.8 所示。

l          使用鼠标右键单击任意报表节的空白外,并从弹出的快捷菜单中选择 插入 / 命令,弹出 插入组 对话框,如图 6.9 所示。

6.8  工具栏启用 插入组 对话框

6.9  “ 插入组 对话框

注意:在分组报表中数据之前,必须已设置报表的数据源。

打开 插入组 对话框后,在 排序和分组依据 两个下拉列表中指定组名字段与组名字段的排序顺序。

组名字段就是报表要分组的字段,组名字段可以是数据库字段或公式字段。

组名字段的排序顺序,有四种选择 按升序 按降序、 按指定顺序 按原始顺序

注意:组名字段的排序顺序并不是去设置该组中数据记录的排序顺序,而是设置报表要先打印出哪一个组的数据。

2 组专家 对话框

组专家 对话框提供了可以同时添加多个分组,并提供了一个可以访问所有当前组的中枢位置。启用 组专家 对话框,使用鼠标右键单击任意报表节的空白外,并从弹出的快捷菜单中选择 报表 / 组专家 命令,弹出 组专家 对话框,如图 6.10 所示。

6.10  “ 组专家 对话框

在这个对话框中,通过上 和下 两个箭头按钮,组可以很容易地被重新排序,这两个箭头按钮位于对话框的右上角。

3 层次组选项 对话框

层次组选项 对话框能够使用户报表的数据动态地,按照数据分组层次显示在报表中。使用 层次组选项 对话框时,应当在报表中创建一个基础级数据分组。启用 层次组选项 对话框时,用鼠标右键单击任意报表节的空白外,并从弹出的快捷菜单中选择 报表 / 层次组选项 命令,弹出 层次组选项 对话框,如图 6.11 所示。

6.11  “ 层次组选项 对话框