创建报表参数和设置报表参数属性
报表参数是为报表全局定义的。如果报表查询包括参数,则将自动创建报表参数(也可以手动创建)。创建报表参数之后,必须设置标识该参数的属性,以及控制该参数在报表中的使用方式的属性。
若要在报表发布之前使用参数,请使用报表设计器中的“报表参数”对话框。有关详细信息,请参阅如何添加、更改或删除报表参数 (Reporting Services)。
报表发布之后,可以在报表管理器或 SQL ServerManagement Studio 中修改多数报表参数属性。有关修改参数属性和安全注意事项的详细信息,请参阅设置已发布报表的参数属性。
报表参数
保存数据集查询后,会为查询参数自动创建报表参数,您也可以手动创建报表参数。创建报表参数之后,可能需要调整报表参数属性的默认值才能获取所需的功能。例如,可能需要更改数据类型、创建数据集以提供可用值列表、创建具有默认值的数据集或设置值是否可为空值或 NULL 值。
如果希望参数允许多个值,则必须将数据集查询也更改为允许多个值。有关详细信息,请参阅使用单值参数和多值参数。此外,如果表达式中包含多值参数,则必须了解如何编写表达式来访问所需的值。有关详细信息,请参阅在表达式中使用 Parameters 集合引用 (Reporting Services)。
若要创建或修改报表参数,请右键单击“数据”窗格中的“参数”节点并打开“报表参数属性”对话框。
备注
删除或更改查询参数的名称后,并不会自动删除或更改相应的报表参数。如果更改查询参数的名称,则在保存该查询后会创建与更改后名称对应的新报表参数。可以重命名报表参数以与新的查询参数名称相匹配,并且更新数据集参数属性将查询参数链接到报表参数。如果删除了某个查询参数,并且不再需要相应的报表参数,则必须手动删除该报表参数。
名称和数据类型
在报表中必须使用参数名称,而且参数名称必须是唯一的。默认情况下,参数数据类型设置为 String。您可以从下拉列表中选择其他数据类型。如果报表参数基于查询参数,请确保报表参数的数据类型与查询参数的数据类型相匹配。Reporting Services 不会检测查询参数的数据类型,因此您必须亲自调整该数据类型。
名称必须符合公共语言规范的字符和大小写标准。有关详细信息,请参阅位于 https://msdn.microsoft.com 上的 Common Language Specification(公共语言规范)。
提示
在已发布的报表中,参数通常显示为文本框,位于报表顶部的参数输入区域中。提示字符串定义的标签用于标识输入区域中的参数。该提示可以是参数的名称或是为用户提供的指导信息,例如“年份”或“选择年份”。如果将提示保留为空白并指定了默认参数值,将会使用这个默认值,并且当用户运行报表时不显示参数的输入框。如果将提示保留为空白但没有指定默认参数值,报表将无法运行。如果不希望提示用户指定参数值,请选择**“隐藏”或“内部”**。
隐藏参数和内部参数
您可以设置选项,用于控制已发布报表中参数的可见性。设置**“隐藏”和“内部”选项可以提供不同级别的可见性。您可以隐藏已发布报表的参数输入区域中的参数,但仍可以在报表 URL 上或订阅定义中设置该参数的值。如果将参数设置为“内部”,则除了在报表定义中之外,将不会以任何其他方式公开该参数。内部参数必须具有默认值,如果选择了“允许 Null 值”**,则为 Null 值。
单值参数和多值参数
可以通过选择**“报表参数”对话框中的“多值”选项定义多值参数。如果未选中此复选框,则参数为单值参数。指定“多值”**选项后,将为已发布报表的参数下拉列表中的可用值添加复选框。用户可以选中所需的值,例如,在 Sales Reason Comparisons 示例报表中,用户可以选择多个产品以查看这些产品的组合销售数据。
指定可用值时,可以提供静态列表或使用查询从数据源中检索可用值。多值参数必须至少包含一个值。不允许为 Null 值。只有当存在多个值时,才会自动创建并显示“全选”选项。
备注
在 Reporting Services 中, 如果您使用的是 Analysis Services 数据源,请不要选择“全选”选项。“全选”选项会导致在处理 MDX 查询时性能下降。如果要选择所有值,请改为在查询设计器中选择 MDX“全部”成员列表。
允许空白值
创建可用值列表时,如果想要将 <空白> 作为有效值,则必须将其包含在有效值列表中。
允许 Null
“允许 Null”是单值参数的一个选项。不能为多值参数选择此值。如果选中“允许空值”,则允许参数有空值。默认情况下,某些查询语言不在结果集中返回 Null 值。
可用值
在定义报表参数时,必须定义报表可使用的值。这些值被称为可用值或有效值。可用值列表中包含一组值/标签对。在运行报表时,用户会看到标签。当用户选中某个标签后,其对应值便用作参数值。可将可用值预定义为静态列表或表达式,也可以从数据集检索它们:
无查询列表是一组值/标签对的静态列表。整个列表均包含在报表参数定义中。每个值和标签既可以是静态值,也可以通过表达式来生成。
在报表运行时,查询列表将使报表服务器从数据集中检索一组值和标签。指定了查询可用值列表后,可以选择数据集、值所用的字段以及标签所用的字段。
在指定查询可用值列表时,建议您为参数创建一个专用的简单数据集,而不要使用报表中各数据区域也在使用的、较为复杂的数据集。如果报表中的有效值列表和数据区域使用相同的数据集,则可能使有效值列表出现意外结果。
默认值
您可以定义参数的默认值。如果报表中的所有参数都有默认值,则在用户打开报表或在报表设计器中预览报表时,报表将立即进行处理。如果报表中至少有一个参数没有默认值,就只能在用户输入所有参数值并运行该报表后才显示数据。
您可以将无查询值或查询值用作默认值。无查询默认值既可以是静态值,也可以是表达式。查询默认值是指向数据集中的字段的表达式。如果查询返回多个行,则将使用返回数据集的第一行的值。
您也可以不指定默认值。如果不指定默认值,则必须指定提示。
备注
如果使用的是多值参数并且查询返回多行,则所有行都用于默认值。