在报告中,我有一个带过滤器的数据集(基于MultiValue参数)。
此数据集包含两个字段:Id和Name。
我需要在某处显示所有名称的串联:
Name1 / Name2 / Name3
问题是join
方法仅适用于数组,然后我无法将数据集指定为值。
我也查看了自定义代码,但我没有找到任何工作。
我该怎么做?
答案 0 :(得分:15)
我可能会有点迟到,但对于对此感兴趣的人,在SSRS中有一个相当简单的方法:
=Join(LookupSet(1,1,Fields!Name.Value, "DatasetName")," / ")
答案 1 :(得分:2)
<强> 1。使用LookupSet
如果你超出了OP版本的2008版本,那么就有一个很好的解决方案:
=Join(LookupSet(1, 1, Fields!Name.Value, "DatasetName"), " / ")
使用the LookupSet
solution对此答案的评分完全归@urbanhusky's answer。
我保留了这个答案,因为它汇总了@ urbanhusky的解决方案,以及那些坚持使用OP版本的SSRS及以下版本的穷人可用的解决方案。
在SSRS 2008中,据我所知,只有三个“选项”,每个选项都有自己的缺点。第一个可能是最不讨人喜欢的。
<强> 2。额外参数
使用允许多个值创建内部参数(例如“NameParameter”,请参阅this SO answer或MSDN)。将参数的默认值设置为数据集中的Name
字段。然后使用函数=Join(Parameters!NameParameter.Value, " / ")
在文本框中显示已连接的名称。
这可能是您最好的选择,但如果有很多值,参数可能无法正常运行。
第3。使用列表
创建一个列表并将名称字段拖放到它。如有必要,也可以在名称上进行分组。
这里的缺点是(AFAIK)无法使列表水平显示。
<强> 4。使用矩阵
哦,男孩,这个真的很难看。尽管如此,这里是:创建一个矩阵,将Name字段拖到列标题,并隐藏第一列和第二行(用于显示数据)。
主要的缺点是它是一个黑客(而且有点过分杀戮),而且你必须用表达式手动修剪最后一个分隔符。