在我们的报表中我们第一个选择就是选择数据区域类型。报表服务提供了下列数据区域类型:
◆表格
表格通过一行接一行的方式表现数据。列是固定的你无法扩展,但是行可以向下展开。因此,当表格增长时,它将数据向下展开。你也可以在表格内将数据分组。
◆矩阵
A矩阵或者叫交叉表类似于表格,但是行和列都是可以扩展并填充数据的。矩阵可以向外和向下增加其他报表对象。你可以在矩阵中在行和列中嵌套分组。
◆列表
列表适用于创建表单的自由表单数据区域。你可以通过嵌套列表来分组数据。
◆图表
图表是数据的图形表达方式。报表服务提供了多种图表的格式。
你选择的数据区域可能依赖于你使用的数据类型、你希望报表的外观和如何展现报表。例如,要以Microsoft? Excel?形式呈递的报表使用表格比使用列表更适合。
报表项的位置和尺寸
报表有3个主要的区域组成:页眉,页脚和正文。报表服务支持将报表中任意放置报表项。数据区域可以和其它区域并行或通过分组来嵌套。
当设计报表时,理解当报表项增长时如何处理是非常重要的。报表项可以水平或垂直的增长,依赖于重复的片断,内容的尺寸和诸如字体等报表渲染的因素。
当报表项增长时,例如一个表格,它会生成很多相关的报表项。这些报表项会在同一个父容器中。有如下2种方法来控制报表项的移动:
◆每个报表项为了维护与上边报表项间的最小距离会向下移动。
◆每个报表项为了维护与左侧报表项间的最小距离会向右移动。
如果一个报表项增长,它会扩展包含它的容器的边界,容器会适应所包容的报表项变化尺寸。
如果报表项和其他的报表项重叠,报表定义中的ZIndex元素决定哪个元素在顶层。ZIndex值高的报表项会置于上层。
这些是一些你可以用来控制报表项的增长和移动方法的技术。如果需要使用矩形和报表项的分组的信息,请参考本文后面“实用的报表设计技巧”部分。
分页
对于场报表来说关键问题在于如何控制页面的分割。页面通过2个因素控制分割:
◆页面尺寸
◆用户指定对象前后页面分割
页面尺寸
为了控制页面的尺寸,可以通过下列指导设置页面的高度和宽度属性:
◆可以通过报表的PageHeight和PageWidth属性设置渲染后的物理页面格式。
◆例如HTML这样的交互式渲染格式不能渲染物理页面分割。而使用 InteractiveHeight 和 InteractiveWidth 属性创建逻辑的页面分割。
◆有一些渲染格式,例如Excel,不支持页面尺寸。对于这些报表,你将不得不使用页面分割符将报表分割成多个页面。
注意,如果报表的自身宽度比页面宽度大,报表将在水平方向上交叉于多个页面。
页面分割
你可以在矩形,表格,矩阵,列表,图表和分组中的开始或结尾处添加分页符。报表服务会尝试将所有报表项和数据分组保持在同一个页面上。
可以使用报表项中的PageBreakAtEnd和PageBreakAtStart属性指定在报表项之前或之后插入分页符。
子报表
子报表是在报表项中指向另外一个报表。任何报表可以被用于一个子报表,并且你可以设置父报表将要传递到子报表的参数。
但是用子报表时你要注意下列前提:
◆子报表无法和父报表共享数据。报表服务器为分割的报表处理每一个子报表实例,但是这会影响性能。
◆子报表的页眉和页脚会被忽略。
子报表在下列环境中十分有用:
◆当你需要在一个数据区域中从不同数据源嵌套分组。
◆当报表有多个一对多关系的部分。
◆当你需要在多个父报表中重用子报表。
◆当你需要在其他报表内部嵌入一个标准的,独立的报表。
如果报表共享数据,类似表格,矩阵,列表和图表这样的数据区域提供了与子报表同样的功能。然而,它们提供更好的性能。数据区域在并行的布局中提供了比子报表更好的工作方式。
表达式和函数
报表制作者可以在报表中使用表达式数据的外观,更改报表项的属性或控制数据的获取。本文的技巧章节提供了一些使用表达式的设计样例。
你可以在表达式中使用Microsoft? Visual Basic?函数。在表1中显示了一些常用的函数。
表1
| Visual Basic 函数 | 结果 |
| Today() | 返回当前日期。 |
| DateAdd() | 基于单一参数提供一段日期。 |
| Year() | 显示指定日期中的年份。使用它分组日期或做为一系列日期的标签。 |
| Month() | 显示日期中的月份 |
| Format() | 格式化字符串。可以用于格式化日起和数字。 |
| Right(), Left(), and InStr() | 返回截取后字符串中的一部分。 |
| Iif | 依照评估的表达式,返回2个值中的1个。为了返回3个值中的1个,你可以嵌套Iif函数。 |
你可以通过引用适当的装配件在表达式中使用.NET函数。你也可以使用自定义的装配件。如果需要此方面更详细的信息,请查看报表服务联机丛书中”Using Customer Assemblies with Reports”部分。