我的报告中有@Year和@Month参数,其中月份已指定值,如1月(标签):1(值),2月:2,... 我的数据库由具有过滤器的存储过程提供
{{1}}
当我在参数设置中选中“允许乘法值”时,它会返回错误
将数据类型nvarchar转换为int时出错。
如何选择所有值(默认情况下)?
答案 0 :(得分:2)
如果您不需要使用存储过程,则可以轻松解决问题。
从存储过程中复制SQL(不包括PROC定义,只包括主代码)并将其粘贴为数据集查询。
将您的= @Year
和= @Month
更改为IN(@Year)
和IN(@Month)
这就是它的全部,没有加入,分裂或其他任何东西。
SSRS会正确地为您输入参数值作为逗号分隔值。
答案 1 :(得分:0)
当您选择多个值时,将参数作为带有Join()的表达式传递给过程。
然后在您的过程中将month参数更改为nvarchar(max)类型。
创建一个临时表并使用一个t-sql拆分字符串函数(谷歌这个,有很多种类,但是如果你被卡住了我们可以找到一个)将字符串拆分成一个表。然后在您的过程中连接到您的表,以过滤选择。
答案 2 :(得分:0)
关于" nvarchar到int"的错误消息表明您的SSRS参数与MonthId
列之间的数据类型不匹配。检查报告参数属性 - >一般 - >前者的数据类型和后者的表模式,并确保它们既可以是text / varchar,也可以是两个整数。
允许查询处理多个参数值应该比需要使用连接和拆分简单得多。只需使用IN
代替=
,并将参数名称放在一组括号内。
AND (cal.MonthId IN (@Month))
要设置参数的默认值,请转到报告参数属性 - >默认值。选择Specify values
选项,并将数字1-12添加为单独的值记录。