Reporting services SSRS:我能知道用户是否选择了;“全部”;在多值参数中?
客户希望我重复报告页眉中的参数值。但如果他们只是在多值参数上选择“全选”,他们希望列出文本“Any” 例如,一个参数有一组固定的9个值。我将文本框的表达式硬编码为:Reporting services SSRS:我能知道用户是否选择了;“全部”;在多值参数中?,reporting-services,Reporting Services,客户希望我重复报告页眉中的参数值。但如果他们只是在多值参数上选择“全选”,他们希望列出文本“Any” 例如,一个参数有一组固定的9个值。我将文本框的表达式硬编码为: ="Room Size: " & iif(Parameters!pRoomCap.Count=9, "Any", Join(Parameters!pRoomCap.Value, ", ")) 如果参数源是未知大小的查询,如何执行此操作?您可以将参数的计数与从中提取参数值的数据集的计数进行比较吗?我使用“选择
="Room Size: " &
iif(Parameters!pRoomCap.Count=9,
"Any",
Join(Parameters!pRoomCap.Value, ", "))
如果参数源是未知大小的查询,如何执行此操作?您可以将参数的计数与从中提取参数值的数据集的计数进行比较吗?我使用“选择”将手动创建的参数与我的数据集合并语句-然后我可以强制该值类似于-1或null
然后简单地检查参数是否包含-1或null,并用替换文本替换标题中的值 试试这个。您需要将数据集中的参数总数与所选参数的计数进行比较。以下假设您的多值参数使用名为“dsRoomSizes”的数据集 此表达式将在页眉/页脚中使用 更新 为了找到问题的解决方案,以下几点应该对你有用。这让人觉得有点黑客味,我鼓励你继续研究其他方法,但这会奏效:
- 参数的来源与查询完全相同
- 在参数属性中,将默认值设置为同一查询
- 重要信息:将参数可见性设置为隐藏
=IIF(Parameters!pRoomCap.Count = Parameters!pRoomCap_hidden.Count,"All",Join(Parameters!ReportParameter1.Value,", "))
以上内容将比较每个参数列表中的选定值。如果列表包含相同的选定值,则表示已在第一个列表中选择“全部”
正如我所说,这是一个黑客行为,但它肯定是有效的。在您升级到2008年之前,这可能是一个不错的解决方案。顺便说一句-我现在使用的是SSRS 2008 R2,这个解决方案对我很有效。我的报告使用了三个数据集;但在tabilx中只有一个我需要隐藏一行的。经过长时间的搜索,很多很多对错误答案毫无帮助;创建一个只隐藏的相同参数(我将其标记为内部参数),然后与公开参数进行比较的解决方案既聪明又简单
多谢各位 Err Msg:CountRows不能在页眉或页脚中使用。我很快对SSRS产生了不好的感觉。对不起。Count(Fields!Division.Value,“dsDivision”)给我一个错误“字段不能在页眉或页脚中使用”。尝试此操作后返回“Nothing”,因此我认为此方法不起作用=iif(isnothing(Count(“dsDivision”)、0、Count(“dsDivision”))我在一个页眉中工作。尝试使用多值参数和上面的表达式创建一个新的空报告。你会看到它是有效的。我刚刚重新测试过,它在标题中对我来说确实有效。你能提供更多关于dsDivision数据集的信息吗?也许是2005年对2008年的事情。如果这在2008年SSRS中有效,那么你就赢得了奖金,但我有2005年,但没有。现在有一些愚蠢的解决方法,明年升级时会修复。嗯……很有趣。我没有2005年的测试(我们在2008年)。感觉它应该适合你。这并不是说你想做的事情太离题了。在将字段放入标头时看到错误的事实很有趣。您不能将单个字段放在标题中,但您完全可以对标题中的字段进行聚合计数。我无法想象这与2005年有关。我想弄明白这一点,因为感觉解决方案就在那里。很抱歉,你不得不用悬赏来解决这个问题。上个月,这个问题在.Thx下得到了回答,但这个答案对我来说并不适用,可能是因为我在SSRS2005上。答案中丑陋的解决方法确实有效,但对于级联参数无效。
=IIF(Parameters!pRoomCap.Count = Parameters!pRoomCap_hidden.Count,"All",Join(Parameters!ReportParameter1.Value,", "))