SSRS 参数条件语句
SSRS Parameters conditional statement
我创建了一个 SSRS 参数,它接受用户输入的整数值。我需要检查用户输入并确保它在一定范围内。我怎样才能在 SSRS 中做到这一点。
参数为ReportingPeriod
,在这个参数属性中我尝试将参数的默认值设置为表达式。我的要求是确保用户在文本框中输入的是 1 到 45 天之间的整数值。由于我是 SSRS 的新手,因此我根据参数表达式描述中的示例创建了如下所示的内容。
=Switch(Parameters!ReportingPeriod.Value = 1, 1,
Parameters!ReportingPeriod.Value = 10, 10,
Parameters!ReportingPeriod.Value = 45, 45)
但这给了我以下错误。
The DefaultValue expression for the report parameter 'ReportingPeriod' contains an error:
The expression references the parameter 'ReportingPeriod', which does not exist in the Parameters collection. Letters in the names of parameters must use the correct case.
据我了解,我认为问题在于输入参数 ReportingPeriod
尚未初始化或其他原因,因此会引发错误,但不确定。
知道如何解决这个问题吗?
我从 this post 获得了上述解决方案参考。
您得到的错误与您想象的一样:您正试图通过引用 ReportingPeriod
的值来设置 ReportingPeriod
的默认值,这是不可能的,因为它尚不存在.
由于您只是在寻找 1 到 45 之间的整数,因此在我看来,自定义代码就有些过分了。您可以简单地通过设置参数的可用值来完成您正在尝试做的事情。与自定义代码相比,唯一的缺点是用户无法将值输入文本框。他们将不得不从下拉列表中选择 select。
因为您知道您只想允许 1-45,您可以指定每个值单独允许。但我建议从查询中获取可用值。
要从查询中获取可用值,您需要创建另一个数据集,其中仅包含您希望该参数允许的值。所以你需要一个包含整数 1 到 45 的数据集。如果你有一个数字 table,这将是微不足道的,就像 select top(45) * from NumbersTable
。但如果没有,您也可以编写一个简单的查询来完成此操作。我确信这个查询不是绝对最好的方法,但它会起作用:
select top(45)
rn = row_number() over(order by object_id)
from
sys.all_columns
然后您将转到参数属性,并在可用值中,select "Get values from a query",将数据集设置为您刚刚创建的数据集,并将值和标签字段设置为该数据集中的唯一列。
我创建了一个 SSRS 参数,它接受用户输入的整数值。我需要检查用户输入并确保它在一定范围内。我怎样才能在 SSRS 中做到这一点。
参数为ReportingPeriod
,在这个参数属性中我尝试将参数的默认值设置为表达式。我的要求是确保用户在文本框中输入的是 1 到 45 天之间的整数值。由于我是 SSRS 的新手,因此我根据参数表达式描述中的示例创建了如下所示的内容。
=Switch(Parameters!ReportingPeriod.Value = 1, 1,
Parameters!ReportingPeriod.Value = 10, 10,
Parameters!ReportingPeriod.Value = 45, 45)
但这给了我以下错误。
The DefaultValue expression for the report parameter 'ReportingPeriod' contains an error:
The expression references the parameter 'ReportingPeriod', which does not exist in the Parameters collection. Letters in the names of parameters must use the correct case.
据我了解,我认为问题在于输入参数 ReportingPeriod
尚未初始化或其他原因,因此会引发错误,但不确定。
知道如何解决这个问题吗?
我从 this post 获得了上述解决方案参考。
您得到的错误与您想象的一样:您正试图通过引用 ReportingPeriod
的值来设置 ReportingPeriod
的默认值,这是不可能的,因为它尚不存在.
由于您只是在寻找 1 到 45 之间的整数,因此在我看来,自定义代码就有些过分了。您可以简单地通过设置参数的可用值来完成您正在尝试做的事情。与自定义代码相比,唯一的缺点是用户无法将值输入文本框。他们将不得不从下拉列表中选择 select。
因为您知道您只想允许 1-45,您可以指定每个值单独允许。但我建议从查询中获取可用值。
要从查询中获取可用值,您需要创建另一个数据集,其中仅包含您希望该参数允许的值。所以你需要一个包含整数 1 到 45 的数据集。如果你有一个数字 table,这将是微不足道的,就像 select top(45) * from NumbersTable
。但如果没有,您也可以编写一个简单的查询来完成此操作。我确信这个查询不是绝对最好的方法,但它会起作用:
select top(45)
rn = row_number() over(order by object_id)
from
sys.all_columns
然后您将转到参数属性,并在可用值中,select "Get values from a query",将数据集设置为您刚刚创建的数据集,并将值和标签字段设置为该数据集中的唯一列。