在报告中,我有一个带有过滤器的数据集(基于MultiValue参数)。
该数据集包含两个字段:Id和Name。
我需要在所有位置显示所有名称的串联:
Name1 / Name2 / Name3
问题在于
join
方法仅适用于数组,因此我无法将数据集指定为值。我也查看了自定义代码,但没有找到任何有效的方法。
我该怎么办?
最佳答案
SSRS-2008 R2及更高版本...
1.使用LookupSet
如果您的版本超出了OP的2008版本,则存在一个不错的解决方案:
=Join(LookupSet(1, 1, Fields!Name.Value, "DatasetName"), " / ")
使用the
LookupSet
solution获得的答案完全归功于@urbanhusky's answer。 SSRS-2008及更低版本...
我之所以保留这个答案,是因为它将@urbanhusky的解决方案与适用于OP版本的SSRS及以下版本的可怜人可用的解决方案结合在一起。
据我所知,在SSRS 2008中只有三个“选项”,每个选项都有其缺点。第一个可能是最少的黑客。
2.额外参数
使用允许多个值创建一个内部参数(例如“NameParameter”,请参阅this SO answer或MSDN)。将参数的默认值设置为数据集中的
Name
字段。然后使用=Join(Parameters!NameParameter.Value, " / ")
函数在文本框中显示连接的名称。这可能是您最好的选择,但是如果有很多值,则该参数可能无法很好地工作。
3.使用列表
创建一个列表并将“名称”字段拖放到该列表中。如有必要,还可以对名称进行分组。
此处的缺点是(AFAIK)无法使列表水平显示。
4.使用矩阵
哦,男孩,这真丑。尽管如此,这里要做的是:创建一个矩阵,将“名称”字段拖到列标题中,并隐藏第一列和第二行(用于显示数据)。
主要缺点是它很容易破解(并且有些过分杀伤力),另外,您还必须使用表达式手动修剪最后一个分隔符。
关于reporting-services - 报告服务: Join all field on a dataset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10997770/