【问题标题】:SSRS Multi Value Parameter. Check whether "Select All" is selectedSSRS 多值参数。检查是否选择了“全选”
【发布时间】:2012-02-24 03:10:24
【问题描述】:

我的 SSRS 报告中有一个多值参数。我想知道是否在该参数中选中了(全选)。

也就是说,是检查参数中的所有值还是只检查部分值。

有可能吗?

我可以通过Parameters!Parameter.Count找出所选值的数量。有没有办法找出该参数中的项目总数?

【问题讨论】:

标签: reporting-services parameters multivalue


【解决方案1】:

如果有人在这样做时仍然遇到问题,我只是编写了这个简单的修复代码。

=IIF(COUNTROWS("dataset").Equals(Parameters!parameter.Count),"it is equal","this is not equal")

【讨论】:

    【解决方案2】:

    对于在文本框中显示报表中所选过滤器的特定用例,如果选择了“(全选)”,这里的表达式将显示“全部”,否则它将显示所有选定的值作为逗号分隔列表:

    =IIF(
         Parameters!YourMultivalueParam.Count = countrows("YourDataset"),
         "All",
         Join(Parameters!YourMultivalueParam.Label,", ")
     )
    

    (为了便于阅读,分成多行)

    countrows参考:https://technet.microsoft.com/en-us/library/dd255215.aspx


    感谢其他答案,只是想针对这种常见情况扩展它们。

    【讨论】:

      【解决方案3】:

      你的方法听起来不错:我会让参数的选项来自数据集。

      然后您可以使用=COUNTROWS("DataSetName") 返回参数的选项总数,并按照您的建议与Parameters!*Parameter*.Count 进行比较。

      【讨论】:

      • 你在哪里使用它?我尝试作为隐藏报表参数和数据集参数:“聚合和查找函数不能在报表参数中使用”
      • 我在报告正文中使用它,并更改标题文本。它可能会从“选定部门:销售、研发”变为“选定部门:”或类似内容。
      【解决方案4】:

      我也遇到过这个问题,就这样解决了。

      我有一个名为“Carrier”的多值参数。然后我添加了一个参数“CarrierHidden”,它与“Carrier”相同,只是我将其可见性设置为隐藏。

      ="Carrier=" & Switch(Parameters!CarrierHidden.Count = Parameters!Carrier.Count, "All",
       Parameters!Carrier.Count > 1 And Parameters!CarrierHidden.Count > Parameters!Carrier.Count, "Multi",
       Parameters!Carrier.Count = 1, Parameters!Carrier.Label(0))
      

      【讨论】:

      【解决方案5】:

      简单的方法是计算所选参数的数量并将它们与数据集进行比较

      =IIF(Parameters!company_number.Count = CountRows("Dataset1"), True, False)
      

      【讨论】:

        【解决方案6】:

        问题是,如果您尝试为另一个数据集提取某些内容,那么交叉引用另一个数据集中的行数将不起作用。您将不得不遵循上一篇文章所述的内容。创建确切类型的内部参数并将默认值分配给整个数据集。这样你就有了自隐藏parameter.count = rowscount 以来的最大行数。这样你就可以在另一个数据集中使用它,前提是数据集是在第一个填充之后。

        【讨论】:

        • 欢迎来到 Stackoverflow。不确定您的答案是否正确,但请尝试添加一点formatting。通常不鼓励使用文字墙(我知道这不是真正的墙)。
        【解决方案7】:

        根据微软的 SSRS 帮助搜索:

        =Parameters!<ParameterName>.Count
        

        返回整数值 1。对于单值参数,计数始终为 1。

        我验证这确实有效,检查内置参数计数字段返回的整数。

        在一个参数选择中允许多个值。检查上述字段的值将让您知道用户实际选择了多少值。

        在我的情况下,我允许公司编号有多个值。这使用户能够选择一家公司进行报告,或者一次选择几家公司。根据客户请求,如果他们选择多个,则水平显示数据。如果在参数列表中只选择了一家公司,则垂直显示数据并隐藏其他 tablix。

        所以我的可见性显示或隐藏表达式在一个 tablix 中如下所示:

        =IIF(Parameters!company_number.Count > 1, True, False)
        

        和其他的一样:

        =IIF(Parameters!company_number.Count = 1,True,False)
        

        【讨论】:

        • 如果不使用“全选”,是否可以检测是否选择了多个参数?
        猜你喜欢
        • 2014-03-28
        • 1970-01-01
        • 1970-01-01
        • 2012-12-28
        • 1970-01-01
        • 2014-12-05
        • 1970-01-01
        • 1970-01-01
        • 2012-01-07
        相关资源
        最近更新 更多