将多值参数传递给子报表

mon*_*can 6 sql parameters subreport multivalue reporting-services

在处理multivalue报告之间的参数时遇到问题.

我有一个主要报告,我在其中定义了一个多值参数,我用它来运行SQL查询来填充其数据集.该参数在WHERE子句中以下列方式使用:

WHERE values IN (@parameter)
Run Code Online (Sandbox Code Playgroud)

它工作正常,它可以恢复预期的数据.

然后,此主报告将此参数传递给子报表.该参数在子报表中也被定义为多值,并且我可以在参数的下拉列表中看到它以正确的方式接收值.像这样:A,B,C

问题是填充子报表的数据集的查询什么都不返回.它还有一个在主报告中定义的WHERE子句(已经工作)

WHERE values IN (@parameter)
Run Code Online (Sandbox Code Playgroud)

如果我手动运行查询,将值硬编码为如下所示:

WHERE values IN ('A', 'B', 'C')
Run Code Online (Sandbox Code Playgroud)

它工作,但当我尝试使用参数时,它没有.所以,不知何故,它正在失去格式或价值观.

我在子报表的数据集定义中尝试了这个解决方案,该定义是在另一个线程中提出的:

 =join(Parameters!<your param name>.Value,",")
Run Code Online (Sandbox Code Playgroud)

但它对我不起作用,数据集仍然是空的.

关于我缺少什么的任何想法?

谢谢!:)

Jam*_*e F 12

这应该"正常".确保子报表中的参数设置为多值,并且我通常使用与父报表中完全相同的查询来提供"可用值".

检查是否将整个参数传递给子报表:在父报表的子报表属性中,参数的值应为[@MyParamName]不读<<Expr>>.如果它作为后者读取,则编辑表达式并确保它最后没有(0).但是=Parameters!MyParamName.Value是正确的,不是 =Parameters!MyParamName.Value(0)


mon*_*can 3

刚刚再次从头开始创建报告并且它起作用了。我一定是忘记了中间的一些事情。

无论如何,为了以防万一有人需要它,两个参数,主报表中的一个和子报表中的一个,必须定义为多值。然后在您的查询中,您应该IN在您的WHERE类中使用,如下所示:

WHERE field IN (@parameter)
Run Code Online (Sandbox Code Playgroud)

不需要其他任何东西。我不需要执行以下操作:

=join(Parameters!<your param name>.Value,",")
Run Code Online (Sandbox Code Playgroud)

这对我有用