IT技术网www.itjs.cn

当前位置:首页 > 数据库 > SQl Server > SQL Server 2005报表设计:最佳实践和指导(1)

SQL Server 2005报表设计:最佳实践和指导(1)

发布时间:2015-11-23 00:00 来源:未知

应用于:Microsoft® SQL Server™ 2005 报表服务

目录

关于这篇文档 

数据区域

在我们的报表中我们第一个选择就是选择数据区域类型。报表服务提供了下列数据区域类型:

表格

列表适用于创建表单的自由表单数据区域。你可以通过嵌套列表来分组数据。

聚合函数和范围

报表服务提供了许多聚合函数可以在报表中创建总和或其他聚合。

每个汇总函数支持一个定义汇总范围的范围参数。范围可以通过分组名称,数据集或数据区域来指定。数据区域或分组必须直接或间接包含聚合函数指定的报表项。

假如你忽略了范围,聚合范围是报表项所在的分组或数据区域中最里面的分组。

在指定Excel报表中使用表格代替列表

表格使用固定的列宽。这很好的满足Excel报表中的表格格式。当渲染为Excel时,报表中的报表项会像我们期望一样排列。

与表格相比,列表是一种自由表单的风格。列表中的报表项将被放置在工作表中像对于在报表中的位置。这样会导致意想不到的结果。假如你的报表中使用了列表,要确认渲染成Excel的结果是可以接受的。

即使使用表格,假如在你的报表中页眉跨越多个列,Excel渲染扩展可能合并单元格或引入新的列。这样会在Excel电子表格中影响数据的排序和操作。假如你计划将报表渲染为Excel,请设法确认报表项排列能将单元格合并减到最小。

长报表的最大页数

为了预防生成Excel产生错误,你应该注意冗长报表的页数。报表中的每页都会变成Excel中的一个工作表。然而,每一个工作簿中为了限制对内存的使用,会有一个最大的工作表数量。假如报表页面超过了这个限制,Excel会生成一个错误。

渲染为Excel时的颜色差异

支持一套预定义的颜色。当你渲染报表时,Excel渲染扩展将报表中的颜色应设成Excel支持颜色中最接近的颜色。

图像

图像渲染扩展可以将报表渲染成位图或图元文件。默认情况下,它将数据渲染成TIFF格式。然而他也可以生成被GDI+支持的任何格式,包括BMP,EMF,GIF,JPEG和PNG。

在报表服务器中图像渲染处理在一个虚拟的页面中进行,并在这个页面创建图像。结果,在任何客户端上,基于图像的报表在字体和布局上看起来都是一样的。

避免空白页

有时当你将报表输出到例如PDF或打印机这样的物理页面是,你可能会看到有空白页面。通常,当报表正文超过纸面尺寸是会发生这种情况。

为了确认所有的内容适合于单一的纸张,正文加上页边的空白应该小于预定义好的纸面宽度。文本框和其他的报表项可以导致正文宽度超过纸面宽度,即使当超出部分的内容不可见。另外,报表项水平的增长(矩阵数据区域和图片自动设置为Autosize或Fit)可以导致正文宽度的增长。

使用分页提高大报表的性能

假如不去为一个返回大量数据的报表设置页面大小或分页符,一些报表格式将会尝试将报表渲染成单页。

例如,Excel没有默认的固定页面宽度。所以,假如你有一个很大的报表,Excel将尝试将其渲染成一个工作表。通常,使用分页符可提高用户访问报表时的性能,因为当渲染报表剩余部分时,用户可以查看报表的第一页。

使用筛选器代替查询参数

报表服务有几种方法动态的过滤报表内容:

◆当返回丛数据源获取数据时使用查询参数过滤数据。

 

     

      SalesOrderID

      =Fields!SalesOrderID.Value

 

在一个报表中的表格中在指定行后添加分页符

你可以使用Ceiling 函数在表格中将行分组,并在每个分组后插入分页符。

Ceiling函数返回不小于输入参数的最小值。例如,每隔30行添加一个分页符,你应该使用下列表达式分组:

=Ceiling(RowNumber(Nothing)/30)

在RDL中描述分组应该类似于下列描述:

      

    

          =Ceiling(RowNumber(Nothing)/30)

      true

 

在页眉和页脚中添加全局变量值

在表6中显示了Globals对象的成员,这些可以在报表的表达式中使用。

表6

名称

类型

描述

PageNumber

Integer

当前页数。仅在报表的页眉和页脚中使用。

TotalPages

Integer

报表的总页数。仅在报表的页眉和页脚中使用。

ExecutionTime

DateTime

报表开始执行得日期和时间。

ReportFolder

String

包含报表的文件夹的路径,例如salesreports\budgeting c:\sales\budget

ReportName

String

报表的名称,例如 currentbudget.

你可以在报表的页眉或页脚中使用表达式显示报表名称和执行时间。时间通过.NET提供的短日期格式。例如:

=Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")

同样也可以利用文本框将报表的当前页数和总页数显示在页眉:

=Globals.PageNumber & " of " & Globals.TotalPages

在页眉中显示报表项

在长报表中你可能会希望在页眉中添加报表正文中的文字。例如,一个姓名地址录在页眉重要显示当页中出现的第一个和最后一个名字。

为了实现这个功能,你可以在页眉上添加一个文本框,并使用First函数。为了在页面上显示第一次出现的LastName值,表达式应该类似于如下所示:

=First (ReportItems!LastName.Value)

同样的,使用表达式函数Last 可以提供在页面上显示LastName 文本框的最后一个值 。例如

=Last (ReportItems!LastName.Value)

创建带有条件格式的钻取连接

报表服务可以通过拥护和报表的交互在报表中隐藏或显示报表项。

你可以使用这种功能在报表中创建钻取连接。例如,通过点击某个区域,用户可以从汇总视图中钻取数据的详细信息。

接下来,为包含该分组的文本框创建触发开关项。然后当用户点击该文本框,隐含的数据变成可见的或数据不显示。

结论

Microsoft SQL Server 2005 报表服务提供了多种报表设计的选择。本文提供了一些常规的指导方针和报表设计技巧,但是只涉及了部分该产品的功能。为了获取更多的设计信息和产品功能,请参考SQL Server 2005 联机丛书。

更多信息:http://www.microsoft.com/sql/ 

应用于:Microsoft® SQL Server™ 2005 报表服务

目录

关于这篇文档 

表格通过一行接一行的方式表现数据。列是固定的你无法扩展,但是行可以向下展开。因此,当表格增长时,它将数据向下展开。你也可以在表格内将数据分组。

列表适用于创建表单的自由表单数据区域。你可以通过嵌套列表来分组数据。

 

     

      SalesOrderID

      =Fields!SalesOrderID.Value

 

在一个报表中的表格中在指定行后添加分页符

你可以使用Ceiling 函数在表格中将行分组,并在每个分组后插入分页符。

Ceiling函数返回不小于输入参数的最小值。例如,每隔30行添加一个分页符,你应该使用下列表达式分组:

=Ceiling(RowNumber(Nothing)/30)

在RDL中描述分组应该类似于下列描述:

      

    

          =Ceiling(RowNumber(Nothing)/30)

      true

 

在页眉和页脚中添加全局变量值

在表6中显示了Globals对象的成员,这些可以在报表的表达式中使用。

表6

名称

类型

描述

PageNumber

Integer

当前页数。仅在报表的页眉和页脚中使用。

TotalPages

Integer

报表的总页数。仅在报表的页眉和页脚中使用。

ExecutionTime

DateTime

报表开始执行得日期和时间。

ReportFolder

String

包含报表的文件夹的路径,例如salesreports\budgeting c:\sales\budget

ReportName

String

报表的名称,例如 currentbudget.

你可以在报表的页眉或页脚中使用表达式显示报表名称和执行时间。时间通过.NET提供的短日期格式。例如:

=Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")

同样也可以利用文本框将报表的当前页数和总页数显示在页眉:

=Globals.PageNumber & " of " & Globals.TotalPages

在页眉中显示报表项

在长报表中你可能会希望在页眉中添加报表正文中的文字。例如,一个姓名地址录在页眉重要显示当页中出现的第一个和最后一个名字。

为了实现这个功能,你可以在页眉上添加一个文本框,并使用First函数。为了在页面上显示第一次出现的LastName值,表达式应该类似于如下所示:

=First (ReportItems!LastName.Value)

同样的,使用表达式函数Last 可以提供在页面上显示LastName 文本框的最后一个值 。例如

=Last (ReportItems!LastName.Value)

创建带有条件格式的钻取连接

报表服务可以通过拥护和报表的交互在报表中隐藏或显示报表项。

你可以使用这种功能在报表中创建钻取连接。例如,通过点击某个区域,用户可以从汇总视图中钻取数据的详细信息。

接下来,为包含该分组的文本框创建触发开关项。然后当用户点击该文本框,隐含的数据变成可见的或数据不显示。

结论

Microsoft SQL Server 2005 报表服务提供了多种报表设计的选择。本文提供了一些常规的指导方针和报表设计技巧,但是只涉及了部分该产品的功能。为了获取更多的设计信息和产品功能,请参考SQL Server 2005 联机丛书。