聚合函数和范围
报表服务提供了许多聚合函数可以在报表中创建总和或其他聚合。
每个汇总函数支持一个定义汇总范围的范围参数。范围可以通过分组名称,数据集或数据区域来指定。数据区域或分组必须直接或间接包含聚合函数指定的报表项。
如果你忽略了范围,聚合范围是报表项所在的分组或数据区域中最里面的分组。
表2中显示了报表服务支持的聚合函数:
表2
|
函数 |
描述 |
| Avg | 从指定表达式中返回所有非空值的平均值。 |
| Count | 返回指定表达式中值的数量。 |
| CountDistinct | 返回指定表达式中所有不同值的数量。 |
| CountRows | 返回指定范围中行的数量。 |
| First | 从指定表达式中返回第一个值。 |
| Last | 从指定表达式中返回最后一个值。 |
| Max | 从指定表达式中返回所有非空值中的最大值。 |
| Min | 从指定表达式中返回所有非空值中的最小值。 |
| StDev | 从指定表达式中返回所有非空值中的标准差。 |
| StDevP | 从指定表达式中返回所有非空值中的总体标准差。 |
| Sum | 从指定表达式中返回所值的总和。 |
| Var | 从指定表达式中返回所有非空值中的方差。 |
| VarP | 从指定表达式中返回所有非空值中的总体方差。 |
表 3
| 函数 | 功能 |
| RowNumber | 在指定范围内返回运行时产生所有行的数量。当于数据区域中使用文本框时,显示在表达式显示部分每个文本框实例的行数。用于指定表格行数或提供分页符。在RowNumber(Nothing)中,关键字Nothing指定了在最外侧数据区域中从第一行开始计数。 |
| RunningValue | 使用指定函数从指定表达式中返回运行时的聚合。 |
报表服务提供了下列导航范围函数。表4中显示了这些函数。
表4
| 函数 | 描述 |
| InScope | 判断当前报表项实例是否在指定的范围中。它使用数据集,分组或数据区域的名称做为参数并返回布尔值。 |
| Level | 在递归层次中返回当前级别的深度。 |
| Previous | 返回之前的行。 |
报表渲染时的考虑
报表服务器提供了一套磨人的渲染扩展。你可以从报表服务中删除扩展或添加自定义扩展支持新的渲染格式。
默认的渲染扩展包括了HTML,Excel,逗号分隔符(CSV),XML,图像和PDF。
注意: 默认渲染扩展在报表服务中可以用于渲染报表。使用SQL Server 2005报表查看器控件在本地生成的报表可以支持HTML报表渲染,但是不需要访问其他的扩展。
你选择的渲染扩展会影响报表的布局。例如,不是所有的渲染扩展支持强制的页面分隔符或者页面分隔符应用于页面尺寸设置。表5中汇总一些差异。
表5
| 渲染扩展 | 基于报表项或分组分页 | 页面尺寸 |
| HTML | 可以 | 使用InteractiveHeight属性 |
| Excel | 可以 | 不可以 |
| CSV | 不可以 | 不可以 |
| XML | 不可以 | 不可以 |
| Image | 可以 | 可以 |
| 可以 | 可以 | |
| GDI (Window 表单) | 可以 | 使用InteractiveHeight属性 |
如果你在设计报表之前你知道报表会被如何渲染,你可以针对目标格式优化报表布局。否则,以应该对各种可能的渲染扩展测试你的报表并找到和解决各式上的问题或异常。
接下来的部分包含了使用Excel,图像,PDF和HTML渲染扩展的一些建议。
Excel
报表服务支持将报表渲染为Microsoft? Excel? 1997及以后版本。如果你计划将报表渲染为Excel,你应该知道一些Excel渲染扩展的特殊属性。例如:
◆在报表中每一个报表页面将变为一个Excel的工作表。Excel不支持页高和页宽的概念,所以只有显式定义的分页符才能将页面分割。
◆报表服务不支持指定工作表名称。
◆渲染扩展构建报表外的表格结构。
◆不支持个别单元中的背景图片。
◆Excel除列表外的嵌套容器。
◆图表被渲染成图片,而不是Excel中的图表。
◆矩形被渲染成单元格组。如果举行包含其他报表项,矩形将变为单元格区域,矩形的边框和背景色将应用于表格区域。
◆子报表将被作为矩形在同父报表中的工作表中渲染。