将多值参数传递给子报表



在报告之间使用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,",")

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

你知道我错过了什么吗?

谢谢!:)

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

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

刚刚从头开始重新创建了报告,它成功了。我一定是在中间忘了什么。

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

WHERE field IN (@parameter)

不需要其他任何东西。我不需要做以下事情:

=join(Parameters!<your param name>.Value,",")

它对我很有效

我想我知道你做了什么,因为我在这里遇到了同样的问题。子报表设置得很好,但当在父报表中输入参数绑定时,Value下拉菜单没有提供我的参数,所以我使用表达式生成器来选择它。这在值中留下了灰色的<< Expr >>标记,只有当我从列表中只选择了一个值时才起作用。当我用[@MyParam]替换它时,无论选择的值有多少,它都能正常工作。当我看了看构建器创建的值表达式时,它有=Parameters!MyParam.Value(0)。移除(0)也修复了它。

最新更新