Reporting services SSRS参数条件语句

Reporting services SSRS参数条件语句,reporting-services,parameters,conditional,ssrs-2012,Reporting Services,Parameters,Conditional,Ssrs 2012,我创建了一个SSRS参数,它接受用户输入作为整数值。我需要检查用户输入,并确保它在一定范围内。我怎样才能在SSRS中做到这一点 参数是ReportingPeriod,在该参数属性中,我试图将参数的默认值设置为表达式。我的要求是确保文本框中的用户输入是1到45天之间的整数值。由于我是SSRS新手,我根据参数表达式描述中的示例创建了如下内容 =Switch(Parameters!ReportingPeriod.Value = 1, 1, Parameters!ReportingPeriod.

我创建了一个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
尚未初始化或出现其他问题,因此引发了错误,但不确定

你知道怎么解决这个问题吗


我从邮局得到了我的上述解决方案参考

您得到的错误与您所想的一样:您试图通过引用
ReportingPeriod
的值来设置
ReportingPeriod
的默认值,这是不可能的,因为它还不存在

因为您只寻找1到45之间的整数,所以在我看来,自定义代码是多余的。只需设置参数的可用值,就可以完成所要做的事情。与自定义代码相比,这种方法唯一的缺点是用户无法在文本框中输入值。他们将不得不从下拉列表中选择它

因为您知道您只希望允许1-45,所以可以分别指定每个允许的值。但我建议从查询中获取可用值

要从查询中获取可用值,您需要创建另一个数据集,该数据集只包含您希望允许该参数使用的值。因此,您需要一个包含整数1到45的数据集。如果您有一个数字表,这将是微不足道的,就像从数字表中选择顶部(45)*。但如果没有,您也可以编写一个简单的查询来完成这项工作。我相信这个查询不是绝对最好的方式,但它会起作用:

select top(45)
    rn = row_number() over(order by object_id)
from
    sys.all_columns
然后转到参数属性,在可用值中选择“从查询中获取值”,将数据集设置为刚创建的数据集,并将值和标签字段设置为该数据集中的唯一列


我有理由做类似的事情,发现这很有用。感谢@CBlack,我创建了一个数字表,并用它来填充下拉列表。按要求很好地工作。