【问题标题】:How to display a sub-set of the selection of a multi-valued parameter in a text-box in SSRS如何在 SSRS 的文本框中显示选择多值参数的子集
【发布时间】:2012-08-13 21:48:15
【问题描述】:

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

【问题讨论】:

  • 看起来它可以采用三种方式 1) 仅“全部” 2) “全部”和任何其他 (全部被忽略) 3) 除全部之外的其他。对于 2) 您可以先加入所有内容,然后使用 Substr 或 Remove 从结果字符串中剪切“All”
  • 谢谢!那解决了它。我最终使用了子字符串。如果其他阅读本文的人需要最终代码,这里是: IIF(Parameters!Faculty.Count
  • 上述解决方案最初有效,但当字符串少于 14 个字符时失败(由于 IIF)。你让我走上了正确的轨道,我想出了一个相当优雅的解决方案: Switch(Parameters!Faculty.Count > 5, "Multiple Selected", Parameters!Faculty.Count
  • 嗨!很高兴看到你解决了它。不要忘记回答您自己的问题并接受答案,这样如果其他人偶然发现您的问题,他们可能会受益!

标签: reporting-services vb6 bids


【解决方案1】:

由 cmets 中的 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'

【讨论】:

    猜你喜欢
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    相关资源
    最近更新 更多