如何在SSRS的文本框中显示多值参数选择的子集

时间:2012-08-13 21:48:16

标签: reporting-services vb6 bids

我在报告上有一个名为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值代表“所有教师”。

1 个答案:

答案 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'