使用参数控制报表数据

新建日期: 2006 年 7 月 17 日

在处理报表时,可以使用参数来控制从数据源检索哪些数据;也可以使用参数对检索到的数据进行筛选。建议您在从数据源检索数据时,仅检索报表需要的特定数据,这是一种很好的做法。不过,在使用存储过程检索数据时,您不能控制从查询检索哪些数据,因此需要对检索到的报表数据进行筛选。

在数据源处筛选数据

可以使用查询参数来帮助确切指定要从数据源检索哪些数据。使用这些参数,可以在将数据发往报表之前在服务器端对它们进行筛选。

当定义的数据集具有包含变量的查询时,Reporting Services 的查询设计器组件将为每个变量创建一个查询参数。系统会为每个查询参数创建一个对应的报表参数,以便用户或报表作者可以选择报表参数值并让系统将它们通过查询传递给数据源。

查询参数

查询参数被定义为数据集查询定义的一部分。由于每个报表数据集都定义一个单独的查询,因此将查询参数定义为数据集的属性。

在定义数据集时,应指定数据源的特定类型,例如,Microsoft SQL Server。报表设计器将打开用于此数据源类型的查询设计器,或者打开可以用于任何数据源类型的通用查询设计器。当对此数据源定义查询后,查询设计器将识别出查询命令文本中的变量并为每个变量创建一个查询参数。有关数据源所需的查询语法的详细信息,请参阅将查询参数与特定数据源配合使用

对于 SQL Server 数据源,查询通常包括 Transact-SQL 语句的 WHERE 子句中的变量,以限定查询运行时所返回数据的范围。同样,Analysis Services 数据源查询通常包括 FILTER 子句中使用的 MDX 变量。查询还可以包括作为输入传递给存储过程或用户定义函数的变量。

每次修改数据集查询时,查询将得到重新处理。如果通过删除变量或重命名变量来更改查询,查询参数将反映相应的更改。只有存在于查询命令文本中的变量才会成为数据集查询定义中的查询参数。

系统将把每个查询参数的默认值设为一个表达式,此表达式的计算结果为相应的报表参数。这种参数绑定是在“数据集”属性的**“参数”**选项卡中定义的。例如,对于 SQL Server 数据源,如果查询参数为 @MyParameter,则报表参数为 MyParameter@MyParameter 的值将被设为表达式 =Parameters!MyParameter.Value。有关详细信息,请参阅数据集(“参数”选项卡,报表设计器)。您可以手动编辑查询参数并设置其默认值。有关详细信息,请参阅如何将查询参数与报表参数相关联(报表设计器)

Aa337287.note(zh-cn,SQL.90).gif注意:
当删除或更改查询参数的名称后,并不会自动删除或更改对应的报表参数。

报表参数

在报表设计器中,当定义一个包括变量的数据集查询时,将自动创建报表参数。在报表生成器中,当对筛选子句设置提示时,将自动创建报表参数。您也可以在**“报表参数”**对话框中手动创建未绑定到查询参数的报表参数。

  • 报表参数数据类型和其他报表参数属性影响报表工具栏上参数的显示。根据参数的数据类型,您可以使用单选按钮、文本框、下拉列表、日历控件或多个复选框来设置报表参数属性。
  • 报表参数可以是单值参数,也可以是多值参数。多值参数允许用户为参数选择多个值。
  • 报表参数可以依赖于另外一个报表参数。报表参数的顺序至关重要。参数列表中后面的参数可以依赖于列表中前面的参数。这就允许您定义这样一组参数,它们称为级联参数,其中一个参数的值列表取决于其他参数选取的值。
  • 报表参数可以用在表达式中。包括参数的表达式可以用在可使用表达式的任何地方。在报表运行时,将替换表达式中的每个参数值。这样,通过由用户选择参数,可以有条件地控制报表外观和内容的许多方面,包括隐藏行和列、对数据进行排序和筛选以及处理空数据。

在制作报表时,报表参数是报表定义的一部分,但在报表发布之后,可对报表参数进行单独管理。在报表设计器的数据视图或布局视图中,可以编辑为报表定义的参数。有关详细信息,请参阅如何添加、编辑或删除报表参数(报表设计器)。在发布报表定义之后,可以使用报表管理器修改参数属性。有关详细信息,请参阅设置已发布报表的参数属性

迅速改变的有效参数值

如果指定了迅速改变的可用值,这些值可能在报表运行之前失效。这样,到用户提交该值并运行报表时,用户从列表中选择的值不再有效。为了避免此类问题,编写的返回数据集的查询需满足下列条件:在典型用户选择值和运行报表所需的时间内,有效值列表应保持不变。

此外,还应避免迅速改变无查询值。例如,如果以当前日期作为可用值,在编写的表达式中就应该用 DateTime.Today 属性,而不是 DateTime.Now 属性。这样一来,该值的时间部分就不会迅速改变。

筛选报表数据

通过定义包括参数引用的数据集筛选表达式,可以对从数据源检索到的数据进行筛选。这样,在报表读者选择了参数值后,当处理报表时,报表中仅显示通过筛选器的数据。

请参阅

任务

如何将查询参数与报表参数相关联(报表设计器)

概念

定义报表数据集

其他资源

教程:将参数添加至基本表格报表
教程:使用参数的高级功能
定义报表数据源
数据视图(报表设计器)

帮助和信息

获取 SQL Server 2005 帮助