SSRS:我可以知道用户是否在多值参数中选择了"ALL"?

Bil*_*ill 4 reporting-services

客户希望我重复报告页眉中的参数值.但如果他们只是在多值参数上选择"全选",他们希望列出文本"任意".

例如,一个参数具有固定的9个值.我将文本框的表达式硬编码为:

="Room Size: " &
iif(Parameters!pRoomCap.Count=9,
    "Any",
    Join(Parameters!pRoomCap.Value, ", "))
Run Code Online (Sandbox Code Playgroud)

如果参数源是未知大小的查询,我该怎么做?

Nak*_*nch 11

试试吧.您需要将数据集中的参数总数与所选参数的计数进行比较.以下假设您的多值参数使用名为"dsRoomSizes"的数据集

="Room Size: " 
& iif(Parameters!pRoomCap.Count = count(Fields!pRoomCap.Value,"dsRoomSizes"),
"Any", 
Join(Parameters!pRoomCap.Value, ", "))
Run Code Online (Sandbox Code Playgroud)

此表达式将在页眉/页脚中起作用.

UPDATE

为了找到问题的解决方案,以下内容应该对您有用.感觉很乱,我鼓励你继续研究替代方法,但这样可行:

  1. 创建第二个多值参数,并将其命名为"pRoomCap_hidden".
    • 参数的来源是完全相同的查询
    • 在参数属性中,将默认值设置为同一查询
    • 重要说明:将参数可见性设置为隐藏

这将在报表中创建第二个多值参数,该参数与初始多值参数完全相同,只有此参数列表将默认选中所有值.

在标题的文本框中输入以下表达式:

=IIF(Parameters!pRoomCap.Count = Parameters!pRoomCap_hidden.Count,"All",Join(Parameters!ReportParameter1.Value,", "))  
Run Code Online (Sandbox Code Playgroud)

以上将比较每个参数列表中的选定值.如果列表包含相同的选定值,则表示在第一个列表中选择了"全部".

就像我说的那样,它是黑客但它绝对有效.在升级到2008之前,这对您来说可能不是一个糟糕的解决方法.