在报告之间使用multivalue
参数时,我遇到了问题。
我有一个主要报告,其中我定义了一个多值参数,我用它来运行SQL查询来填充其数据集。该参数在WHERE子句中以下列方式使用:
WHERE values IN (@parameter)
它工作正常,它可以检索预期的数据。
然后,此主报告将此参数传递给子报表。该参数在子报表中也被定义为多值,并且我可以在参数的下拉列表中看到它以正确的方式接收值。像这样:A,B,C
问题是填充子报表的数据集的查询什么都不返回。 它还有一个在主报告中定义的WHERE子句(已经在工作中)
WHERE values IN (@parameter)
如果我手动运行查询,请将值硬编码为以下内容:
WHERE values IN ('A', 'B', 'C')
它可以工作,但是当我尝试使用参数时它没有。所以,不知怎的,它正在失去格式或价值观。
我在子报表的数据集定义中尝试了这个解决方案,这是在另一个线程中提出的:
=join(Parameters!<your param name>.Value,",")
但它对我不起作用,数据集仍然是空的。
关于我缺少什么的任何想法?
谢谢! :)
答案 0 :(得分:12)
这应该“正常工作”。确保子报表中的参数设置为多值,并且我通常使用与父报表中完全相同的查询来提供“可用值”。
检查是否将整个参数传递给子报表:在父报表的子报表属性中,参数的值应为[@MyParamName]
而不是<<Expr>>
。如果它作为后者读取,则编辑表达式并确保它最后没有(0)。但是=Parameters!MyParamName.Value
是正确的,不是 =Parameters!MyParamName.Value(0)
答案 1 :(得分:3)
刚刚从头开始创建报告并且它有效。我一定忘记了中间的事情。
无论如何,只要有人需要它,必须将两个参数(主报告中的参数和子报告中的参数)定义为多值。
然后在您的查询中,您应该在IN
段中使用WHERE
,如下所示:
WHERE field IN (@parameter)
不需要其他任何东西。我不需要做以下事情:
=join(Parameters!<your param name>.Value,",")
它对我有用
答案 2 :(得分:2)
我想我知道你做了什么,因为我在这里遇到了同样的问题。
子报表设置正常,但在父报表中输入参数绑定时,Value
下拉列表确实提供了我的参数,因此我使用表达式构建器来选择它。这会在值中留下灰色的<< Expr >>
标记,并且只有在我从列表中选择了一个值时才会起作用。当我用[@MyParam]
替换它时,无论选择多少值,它都能正常工作。当我看到值表达式构建器创建得更近一点时它有=Parameters!MyParam.Value(0)
。删除(0)
也会修复它。