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

时间:2012-02-01 12:28:28

标签: reporting-services parameters multivalue

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

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

有可能吗?

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

7 个答案:

答案 0 :(得分:21)

如果有人在执行此操作时仍遇到问题,我只是编写了这个简单的解决方案。

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

答案 1 :(得分:7)

对于在文本框中在报表上显示所选过滤器的特定用例,此处显示的是将显示"全部"如果"(全选)"已选中,否则它将以逗号分隔列表显示所有选定的值:

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

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

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

归功于其他答案,只想为这种常见情况扩展它们。

答案 2 :(得分:6)

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

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

答案 3 :(得分:2)

我也遇到过这个问题..我这样解决了..

我有一个名为“Carrier”的多值参数...我添加了一个参数“CarrierHidden”,它与“Carrier”相同,只是我将其Visibility视为隐藏。

=“Carrier =”& Switch(参数!CarrierHidden.Count =参数!Carrier.Count,“全部”,  参数!Carrier.Count> 1和参数!CarrierHidden.Count>参数!Carrier.Count,“Multi”,  参数!Carrier.Count = 1,参数!Carrier.Label(0))

这对我来说很好。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

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

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

答案 6 :(得分:0)

根据微软的ssrs帮助搜索:

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

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

在参数选择上允许多个值。检查上述字段的值将告诉您用户实际选择的值。

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

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

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

在另一个中像这样:

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

快乐的编码! 罗宾