如何选择SSRS中的所有参数值?

时间:2017-07-10 12:57:20

标签: sql sql-server reporting-services sql-server-2016

我的报告中有@Year和@Month参数,其中月份已指定值,如1月(标签):1(值),2月:2,... 我的数据库由具有过滤器的存储过程提供 enter image description here

{{1}}

当我在参数设置中选中“允许乘法值”时,它会返回错误

  

将数据类型nvarchar转换为int时出错。

如何选择所有值(默认情况下)?

3 个答案:

答案 0 :(得分:2)

如果您不需要使用存储过程,则可以轻松解决问题。

从存储过程中复制SQL(不包括PROC定义,只包括主代码)并将其粘贴为数据集查询。

将您的= @Year= @Month更改为IN(@Year)IN(@Month)

这就是它的全部,没有加入,分裂或其他任何东西。

SSRS会正确地为您输入参数值作为逗号分隔值。

答案 1 :(得分:0)

当您选择多个值时,将参数作为带有Join()的表达式传递给过程。

enter image description here

然后在您的过程中将month参数更改为nvarchar(max)类型。

创建一个临时表并使用一个t-sql拆分字符串函数(谷歌这个,有很多种类,但是如果你被卡住了我们可以找到一个)将字符串拆分成一个表。然后在您的过程中连接到您的表,以过滤选择。

答案 2 :(得分:0)

关于" nvarchar到int"的错误消息表明您的SSRS参数与MonthId列之间的数据类型不匹配。检查报告参数属性 - >一般 - >前者的数据类型和后者的表模式,并确保它们既可以是text / varchar,也可以是两个整数。

允许查询处理多个参数值应该比需要使用连接和拆分简单得多。只需使用IN代替=,并将参数名称放在一组括号内。

AND (cal.MonthId IN (@Month))

要设置参数的默认值,请转到报告参数属性 - >默认值。选择Specify values选项,并将数字1-12添加为单独的值记录。