我的SSRS报告中有一个多值参数。我想知道是否在该参数中选中了(全选)。
换句话说,是检查参数中的所有值还是仅检查某些值。
有可能吗?
我可以通过参数找到所选值的数量!参数 .Count。有没有办法找出该参数中的项目总数?
答案 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)
快乐的编码! 罗宾