2012-08-13 23 views
3

我在报告中有一个名为Faculty的多值参数。我想在报告顶部的文本框中显示选择内容。显而易见的解决办法是:如何在SSRS中的文本框中显示多值参数选择的子集

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

,我遇到的问题是,在列表中(默认)的第一个选项是“所有的教师”。这与SSRS提供的“全选”复选框截然不同。我们已经创建了这个硬编码的“全部”选项,因为它在参数屏幕上看起来更干净(用户看到“所有教师”而不是“亚当,乔木,奥特曼...”等)。如果用户离开此选项并进行其他选择,我们假定他们只打算选择其他项目,而存储过程忽略“全部”选项。

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

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

该部分在方括号内是我有什么麻烦。 0000000值代表“所有教师”。

+0

看起来像它可以去以下三种方式1)“全部”只有2)“所有”和任何其他人(全部是忽略)3)其他人除外。对于2)您可以先加入所有内容,然后使用Substr或Remove来删除结果字符串中的“All”。 – user1578107 2012-08-14 05:31:48

+1

谢谢!这解决了它。我结束了使用子字符串。如果有其他人阅读,需要最终代码,这里是: IIF(Parameters!Faculty.Count <6, IIF(Parameters!Faculty.Value(0)=“0000000”, IIF(Parameters!Faculty。 (参数!Faculty.Label,“;”)), (JOIN(Parameters!Faculty.Label,“;”).Substring(13))),(JOIN(Parameters!Faculty.Label, “;”))),“Multiple”) 我添加了一张支票,这样它一次最多只显示5个,否则会显示“多个”。我做了Substring(13),因为“所有教职员工”是13个字符,包括空格。 – user1596554 2012-08-14 14:38:23

+1

上面的解决方案最初工作,但当字符串少于14个字符(由于IIF)时失败。你让我在正确的轨道上,我想出了一个相当优雅的解决方案:! 开关(参数Faculty.Count> 5, “多选” 参数Faculty.Count <= 5, 替换(( JOIN(Parameters!Faculty.Label,“;”)),“All Faculty;”,“”))'code' – user1596554 2012-08-14 15:43:45

回答

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),因为“所有教职员工”是13 个字符,包括空格。

上面的解决方案最初工作,但当字符串为 小于14个字符(由于IIF)失败。你让我在右边 赛道,我想出了一个相当优雅的解决方案:

Switch(Parameters!Faculty.Count > 5, "Multiple Selected", 
Parameters!Faculty.Count <= 5, 
Replace((JOIN(Parameters!Faculty.Label,"; ")),"All Faculty; ", 
""))'code' 
相关问题