数据分组(页面布局)

在页面报表中,您可以设置分组来组织报表中的数据。通常做法是在数据区域中通过字段或表达式进行分组。
根据数据区域的不同,可以按照以下方法进行数据分组:

l 在Table或BandedList中,您可以添加组头和组尾。可以设置表格数据区域中明细数据的分组信息。

l 在List中,您可以设置明细数据分组,可以设置多级嵌套分组。

l 在Matrix中,您可以通过动态或者静态两种方式添加列和行以实现数据分组。

l 在Chart中,您可以按类别或系列对数据分组。

在页面布局中,您也对报表中的数据进行分组。

数据分组(页面布局)

明细数据分组

在 List 和 Table 数据区域中,可对明细数据进行分组。当您不希望在明细区域内显示重复值时,这是一种很好的选择,设置明细数据分组之后,会根据分组表达式返回唯一值,而不是数据源中的所有数据行。

比如,使用 Reels 数据库中的 Movie 作为数据源,在不设置分组的情况下按年显示电影名,那么该年内有多少影片,年信息就会显示多少遍。

如果您设置明细数据按照 = Fields!YearReleased.Value 进行分组,那么,年信息只会显示一次。

明细数据分组

注意:如果分组表达式对应的值在数据源中本来就是唯一的,那么,分组之后还是每行数据都会显示一次年信息,比如,将 MovieID 作为分组条件,得到的结果和没有设置分组完全一样。

递归层次结构

如果您想显示数据之间的主-从关系,您可以创建递归层次结构的报表。要实现此功能,您需要为主分组和从分组各设置一个唯一的字段。

例如,使用下面的 SQL 查询语句:

SELECT EmployeePosition.*, Employee.*, Employee_1.PositionID AS ManagerPosition FROM Employee AS Employee_1 RIGHT JOIN (EmployeePosition INNER JOIN Employee ON EmployeePosition.PositionID = Employee.PositionID) ON Employee_1.EmployeeID = Employee.ManagementID;

您可以在 Table 中为明细数据分组设置 =Fields.Item("EmployeePosition.PositionID").Value 字段,并设置 =Fields!ManagerPosition.Value 为主分组字段,以此来显示数据的主-从关系。

数据主从关系

注意:当你设置主分组时,您只能使用一个分组表达式。

Level 函数

若要更好地显示递归层次结构的数据,您可以使用 Level 函数。此函数会对文本进行缩进操作,以此更好的显示主-从数据之间的关系。若要实现此功能,您需要给文本框的Padding - Left属性设置相应的表达式。以下表达式:设置一个表达式中的空白-左要缩进文本框中的属性。

例如,在 Table 数据区域中,可以通过以下表达式实现文本的自动缩进:

=Convert.ToString (2 + (Level()*10)) &"pt"

Level 函数