我想生成一个带有多值参数的多行表。
我现在唯一能做的就是将指定的参数传递给每一行,如下所示:
=Parameters!P.Value(0)
=Parameters!P.Value(1)
...
=Parameters!P.Value(n)
有没有办法动态地做到这一点?
答案 0 :(得分:1)
有趣的问题,我唯一能想到的是将参数数组转换为数据集中的xml,然后通过xml节点将其转换为表。
数据集参数(让我们称之为@par)然后应该在表达式中设置为:
= "<n>" + join(Parameters!P.Value,"</n><n>") + "</n>"
然后对数据集的查询将是:
declare @parxml xml = @par
Select p.query('./text()')
from @parxml.nodes('/n') as T(p)
这将提供一个表,每个选定的参数值都有一行。
答案 1 :(得分:1)
最后我找到了一个很好的解决方案 (记住P是一个多值参数.. es。P = a; b; c; d; e)
首先添加一个数据集,该数据集指向由数字渐进字段(id)组成的表(数据库),如下所示:(记得将表中包含多行&gt; =加载到多个值中的可能数量的值) -value-parameter ...或者只是加载10000行,我想你会好的)
然后在报告中添加一个表格:字段 id (来自Dataset1)和以下表达式(代表参数P):
=Parameters!P.Value(Fields!id.Value)
现在,如果您运行报告,您将获得以下内容:
要删除#Error行,只需像下面一样过滤整个表,就完成了!