Reporting services SSRS参数条件语句
我创建了一个SSRS参数,它接受用户输入作为整数值。我需要检查用户输入,并确保它在一定范围内。我怎样才能在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.
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,我创建了一个数字表,并用它来填充下拉列表。按要求很好地工作。