代码之家  ›  专栏  ›  技术社区  ›  Bill

我能知道用户是否在多值参数中选择了“ALL”吗?

  •  4
  • Bill  · 技术社区  · 14 年前

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

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

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

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

    4 回复  |  直到 14 年前
        1
  •  11
  •   NakedBrunch    14 年前

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

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

    更新

    1. 创建第二个多值参数并将其命名为“pRoomCap\u hidden”。
      • 参数的源是完全相同的查询
      • 在参数属性中,为同一查询设置默认值
      • 重要

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

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

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

    以上将比较每个参数列表中的选定值。如果列表包含相同的选定值,则表示已在第一个列表中选择“所有”。

        2
  •  1
  •   jimconstable    14 年前

        3
  •  0
  •   Mauro    14 年前

    我将参数的数据集与我用“select”语句手动创建的数据集合并,然后我可以强制值为-1或null。

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

        4
  •  0
  •   ASheppardWork    11 年前

    顺便说一句-我现在使用SSRS2008R2和这个解决方案为我工作。我的报表使用了三个数据集;但在tabilx中只有一个数据集需要隐藏一行。经过长时间的搜索,许多,许多错误的答案毫无帮助;创建一个相同的参数只隐藏(我标记为内部)然后与暴露的参数进行比较的解决方案是聪明而简单的。

    非常感谢你!

    推荐文章