3

Faculty我有一个在报告上调用的多值参数。我想在报告顶部的文本框中显示选择。显而易见的解决方案是:

JOIN(Parameters!Faculty.Label,", ")

我遇到的问题是列表中的第一个选项(默认)是“所有教师”。这与 SSRS 提供的“全选”复选框不同。我们创建了这个硬编码的“All”选项,因为它在参数屏幕上看起来更清晰(用户看到“All Faculty”而不是“Adam, Arbor, Altman...”等)。如果用户保留此选项并进行任何其他选择,我们假设他们仅选择其他项目并且存储过程忽略“全部”选择​​。

所以我想显示这样的东西:

IIF(Parameters!Faculty.Value(0) = "0000000", [*display all selections except value 0*], (JOIN(Parameters!Faculty.Label,", "))

方括号中的部分是我遇到的问题。该0000000值表示“所有教员”。

4

1 回答 1

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 个,否则它会显示“多个”。我做了 Substring(13) 因为“All Faculty;”是 13 个字符,包括空格。

上面的解决方案最初有效,但当字符串少于 14 个字符时失败(由于 IIF)。你让我走上了正确的道路,我想出了一个相当优雅的解决方案:

Switch(Parameters!Faculty.Count > 5, "Multiple Selected",
Parameters!Faculty.Count <= 5,
Replace((JOIN(Parameters!Faculty.Label,"; ")),"All Faculty; ",
""))'code'
于 2012-10-31T20:42:43.047 回答