【问题标题】:SSRS: Can I know if user selected "ALL" in multivalued param?SSRS:我可以知道用户是否在多值参数中选择了“ALL”吗?
【发布时间】:2010-09-13 21:09:33
【问题描述】:

客户要我重复报表页眉中的参数值。但如果他们只是在多值参数上选择“全选”,他们希望列出文本“任何”。

例如,一个参数有一组固定的 9 个值。我将文本框的表达式硬编码为:

="Room Size: " &
iif(Parameters!pRoomCap.Count=9,
    "Any",
    Join(Parameters!pRoomCap.Value, ", "))

如果参数来源是未知大小的查询,我该怎么做?

【问题讨论】:

  • 抱歉,您必须为此使用赏金。上个月在stackoverflow.com/questions/3480463/… 下回答了这个问题。
  • Thx 但这个答案对我不起作用,可能是因为我在 SSRS2005 上。答案中丑陋的解决方法确实有效,但不适用于级联参数。

标签: reporting-services


【解决方案1】:

试试这个。您需要将数据集中的参数总数与所选参数的计数进行比较。以下假设您的多值参数使用名为“dsRoomSizes”的数据集

="Room Size: " 
& iif(Parameters!pRoomCap.Count = count(Fields!pRoomCap.Value,"dsRoomSizes"),
"Any", 
Join(Parameters!pRoomCap.Value, ", "))

此表达式将在页眉/页脚中起作用。

更新

为了找到问题的解决方案,以下内容应该适合您。感觉很老套,我鼓励你继续研究替代方法,但这会奏效:

  1. 创建第二个多值参数并将其命名为“pRoomCap_hidden”。
    • 参数的来源是完全相同的查询
    • 在参数属性中,将默认值设置为同一个查询
    • 重要:将参数可见性设置为隐藏

这将在您的报告中创建第二个多值参数,该参数与您的初始多值参数完全相同,只是此参数列表将默认选择所有值。

在标题的文本框中输入以下表达式:

=IIF(Parameters!pRoomCap.Count = Parameters!pRoomCap_hidden.Count,"All",Join(Parameters!ReportParameter1.Value,", "))  

上面将比较每个参数列表中选择的值。如果列表包含相同的选定值,则表明在第一个列表中选择了“全部”。

就像我说的,它很老套,但它确实有效。在您升级到 2008 之前,这对您来说可能不是一个糟糕的解决方法。

【讨论】:

  • 对不起。 Count(Fields!Division.Value, "dsDivision") 给我一个错误“字段不能在页眉或页脚中使用。”试过这个,它返回“Nothing”,所以我认为这种方法行不通。 =iif(isnothing(Count("dsDivision")), 0, count("dsDivision"))
  • 我在页眉中有这个工作。尝试使用您的多值参数和上面的表达式创建一个新的空报告。你会看到它有效。
  • 我刚刚重新测试,它在标题中肯定对我有用。您能否提供有关您的 dsDivision 数据集的更多信息?
  • 也许是 2005 年 vs 2008 年的事情。如果这在 SSRS 2008 中有效,那么您将赢得赏金,但我有 2005 年,但它没有。目前有愚蠢的解决方法,明年升级时会解决。
  • 嗯...有趣。我没有 2005 年要测试(我们是 2008 年。)感觉它应该适合你。这不像你试图做任何超出框框的事情。将字段放在标题中时看到错误的事实很有趣。您不能将单个字段放在标题中,但您绝对可以在标题中汇总字段数。我无法想象这与 2005 年有关。我想弄清楚这一点,因为感觉解决方案就在那里。
【解决方案2】:

您能否将参数的计数与您从中提取参数值的数据集的计数进行比较?

【讨论】:

  • 错误消息:CountRows 不能在页眉或页脚中使用。我很快对 SSRS 产生了不好的感觉。
【解决方案3】:

我将我的参数数据集与我使用“select”语句手动创建的参数结合起来 - 然后我能够强制该值类似于 -1 或 null。

然后只需检查参数是否包含 -1 或 null 并将标题中的值替换为替换文本。

【讨论】:

    【解决方案4】:

    顺便说一句-我现在使用的是 SSRS 2008 R2,这个解决方案对我有用。我的报告使用三个数据集;但我只需要在表格中隐藏一行。经过长时间的搜索和许多、许多、许多对错误答案没有帮助;创建一个仅隐藏的相同参数(我将其标记为内部)然后与暴露的参数进行比较的解决方案非常简单。

    非常感谢!

    【讨论】:

      猜你喜欢
      • 2012-02-24
      • 2018-11-17
      • 2019-05-31
      • 1970-01-01
      • 1970-01-01
      • 2018-11-17
      • 2014-11-24
      • 2023-02-04
      • 1970-01-01
      相关资源
      最近更新 更多