SSRS多值参数。检查是否选择了“全部选择”。

20

我在我的SSRS报表中有一个多值参数。我想找出是否选择了(全选)。

换句话说,该参数中的所有值是否都被选中或者只有部分被选中。

这可行吗?

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


1
备选方案:添加特定的“全部”选项 https://dev59.com/Am3Xa4cB1Zd3GeqPcDU2 - Tim Abell
8个回答

28

如果有人仍然在解决这个问题,我刚刚编写了这个简单的修复程序。

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

9

针对在报表中显示所选筛选器的特定用例,以下是表达式,如果选择了“(全选)”,则会显示“全部”,否则将显示所有选定值作为逗号分隔列表:

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

(为了易读性而分成多行)

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


感谢其他答案,我只是想在这个常见的情况下扩展它们。


6

你的方法听起来不错:我建议将参数选项从数据集中获取。

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


1
你会在哪里使用它?我尝试将其用作隐藏的报表参数和数据集参数:“聚合和查找函数无法在报表参数中使用”。 - Julien N
2
我在报告正文中使用它,并更改标题文本。它可能会从“选择的部门:销售,研发”更改为“选择的部门:<所有部门>”或类似内容。 - Jamie F

3
我也遇到了这个问题,并通过以下方式解决。
我有一个名为“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))

我想这会有性能开销,因为需要实现结果,与其他选项相比。然而,这是我能够获取使用参数的共享数据集的行数的唯一方法。(参考链接) - Dale K

2

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

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

1
问题在于,如果你试图从另一个数据集中提取数据,那么交叉引用另一个数据集中的行数是行不通的。你需要按照先前的帖子所述创建一个精确类型的内部参数,并将默认值分配给整个数据集。这样,您就可以获得最大行数,因为隐藏的parameter.count = rowscount。这样,您也可以在另一个数据集中使用它,前提是第一个数据集填充完毕后才能使用。

2
欢迎来到Stackoverflow。不确定你的答案是否正确,但请尝试添加一些格式化。长篇大论(我知道这并不是真正的长篇大论)通常是不被鼓励的。 - Scott Solmer

0
根据微软的SSRS帮助搜索:
=Parameters!<ParameterName>.Count

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

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

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

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

因此,在一个表格中,我的可见性显示或隐藏表达式如下:

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

并在另一个中类似于此:

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

如果没有使用“全选”,是否可以检测到选择了多个参数? - JosephDoggie

0

我使用Count来显示列表中的单个标签或多个选定的参数

=iif(Parameters!parameter_list_name.Count=1,
Parameters!parameter_list_name.Label(0),
Join(Parameters!parameter_list_name.Label,", "))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接