报告服务:加入数据集上的所有字段

J4N*_*J4N 6 reporting report reporting-services ssrs-2008

在报告中,我有一个带过滤器的数据集(基于MultiValue参数).

此数据集包含两个字段:Id和Name.

我需要在某处显示所有名称的串联:

Name1 / Name2 / Name3
Run Code Online (Sandbox Code Playgroud)

问题是该join方法仅适用于数组,然后我不能将数据集指定为值.

我也查看了自定义代码,但我没有找到任何工作.

我该怎么做?

urb*_*sky 15

我可能有点迟到但对于对此感兴趣的任何人,在SSRS中有一个相当简单的方法:

=Join(LookupSet(1,1,Fields!Name.Value, "DatasetName")," / ")
Run Code Online (Sandbox Code Playgroud)


Jer*_*oen 3

SSRS-2008 R2及更高版本...

1.使用LookupSet
如果你的版本超出了OP的2008版本,那么有一个很好的解决方案:

=Join(LookupSet(1, 1, Fields!Name.Value, "DatasetName"), " / ")
Run Code Online (Sandbox Code Playgroud)

使用该解决方案的答案完全LookupSet归功于@urbanhusky的答案


SSRS-2008 及更低版本...

不过,我保留这个答案是因为它汇总了 @urbanhusky 的解决方案以及那些受 OP 版本的 SSRS 及以下版本困扰的可怜人可用的解决方案。

据我所知,SSRS 2008 中只有三个“选项”,每个选项都有其自身的缺点。第一个可能是最不黑客的。

2.额外参数
创建一个内部参数(例如“NameParameter”,请参阅此SO答案MSDN)并允许多个值。将参数的默认值设置为Name数据集中的字段。然后使用该函数=Join(Parameters!NameParameter.Value, " / ")在文本框中显示连接的名称。

这可能是您最好的选择,但如果有很多值,该参数可能无法很好地工作。

3. 使用列表
创建一个列表并将名称字段拖/放到其中。如有必要,还可对名称进行分组。

这里的缺点是(据我所知)列表不能水平显示。

4. 使用矩阵
哦天哪,这个真丑。尽管如此,这里还是这样:创建一个矩阵,将“名称”字段拖动到列标题,然后隐藏第一列和第二行(用于显示数据)。

主要缺点是它是一种黑客行为(而且有些矫枉过正),而且您必须使用表达式手动修剪最后一个分隔符。