在报告之间使用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)
也修复了它。