我在报告上有一个名为Faculty
的多值参数。我想在报告顶部的文本框中显示选择。显而易见的解决方案是:
JOIN(Parameters!Faculty.Label,", ")
我遇到的问题是列表中的第一个选项(默认)是“All Faculty”。这与SSRS提供的“全选”复选框不同。我们创建了这个硬编码的“全部”选项,因为它在参数屏幕上看起来更干净(用户看到“所有教师”而不是“Adam,Arbor,Altman ......”等)。如果用户离开此选项并进行任何其他选择,我们假设它们只是选择其他项目而存储过程忽略“全部”选择。
所以我想展示这样的东西:
IIF(Parameters!Faculty.Value(0) = "0000000", [*display all selections except value 0*], (JOIN(Parameters!Faculty.Label,", "))
方括号中的部分是我遇到的问题。 0000000
值代表“所有教师”。
答案 0 :(得分:0)
OP在对原始问题的评论中回答:
我最终使用了子串。如果其他人阅读此内容需要 最终代码,这里是:
IIF(Parameters!Faculty.Count < 6,
IIF(Parameters!Faculty.Value(0) = "0000000",
IIF(Parameters!Faculty.Count = 1, (JOIN(Parameters!Faculty.Label,";
")), (JOIN(Parameters!Faculty.Label,"; ").Substring(13))),
(JOIN(Parameters!Faculty.Label,"; "))), "Multiple")
我添加了一张支票 它说,它一次最多只能显示5个 “多”。我做了子串(13),因为“所有教师;”是13 字符包括空格。
上面的解决方案最初有效,但是当字符串出现时失败了 少于14个字符(由于IIF)。你让我在右边 我想出了一个相当优雅的解决方案:
Switch(Parameters!Faculty.Count > 5, "Multiple Selected",
Parameters!Faculty.Count <= 5,
Replace((JOIN(Parameters!Faculty.Label,"; ")),"All Faculty; ",
""))'code'