17

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

换句话说,是检查参数中的所有值还是仅检查部分值。

可能吗?

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

4

7 回答 7

26

如果有人仍然遇到问题,我只是编写了这个简单的修复程序。

=IIF(COUNTROWS("dataset").Equals(Parameters!parameter.Count),"it is equal","this is not equal")
于 2013-02-12T22:18:17.833 回答
8

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

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

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

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


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

于 2015-05-22T17:06:07.943 回答
6

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

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

于 2012-02-01T15:22:44.160 回答
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))
于 2012-02-24T16:33:50.920 回答
2

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

=IIF(Parameters!company_number.Count = CountRows("Dataset1"), True, False)
于 2018-09-25T13:17:22.360 回答
1

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

于 2013-11-20T18:14:00.437 回答
0

根据微软的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-12-30T22:04:38.290 回答