7

我在处理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,",")

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

关于我所缺少的任何想法?

谢谢!:)

4

3 回答 3

13

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

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

于 2012-12-05T17:55:57.413 回答
3

刚刚再次从头开始创建报告并且它有效。我肯定忘记了中间的东西。

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

WHERE field IN (@parameter)

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

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

它对我有用

于 2012-12-05T20:32:48.263 回答
3

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

于 2014-10-24T04:34:13.303 回答