Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reporting services SSRS:我能知道用户是否选择了;“全部”;在多值参数中?_Reporting Services - Fatal编程技术网

Reporting services SSRS:我能知道用户是否选择了;“全部”;在多值参数中?

Reporting services SSRS:我能知道用户是否选择了;“全部”;在多值参数中?,reporting-services,Reporting Services,客户希望我重复报告页眉中的参数值。但如果他们只是在多值参数上选择“全选”,他们希望列出文本“Any” 例如,一个参数有一组固定的9个值。我将文本框的表达式硬编码为: ="Room Size: " & iif(Parameters!pRoomCap.Count=9, "Any", Join(Parameters!pRoomCap.Value, ", ")) 如果参数源是未知大小的查询,如何执行此操作?您可以将参数的计数与从中提取参数值的数据集的计数进行比较吗?我使用“选择

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

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

="Room Size: " &
iif(Parameters!pRoomCap.Count=9,
    "Any",
    Join(Parameters!pRoomCap.Value, ", "))

如果参数源是未知大小的查询,如何执行此操作?

您可以将参数的计数与从中提取参数值的数据集的计数进行比较吗?

我使用“选择”将手动创建的参数与我的数据集合并语句-然后我可以强制该值类似于-1或null


然后简单地检查参数是否包含-1或null,并用替换文本替换标题中的值

试试这个。您需要将数据集中的参数总数与所选参数的计数进行比较。以下假设您的多值参数使用名为“dsRoomSizes”的数据集

此表达式将在页眉/页脚中使用

更新

为了找到问题的解决方案,以下几点应该对你有用。这让人觉得有点黑客味,我鼓励你继续研究其他方法,但这会奏效:

  • 创建第二个多值参数,并将其命名为“pRoomCap_hidden”。
    • 参数的来源与查询完全相同
    • 在参数属性中,将默认值设置为同一查询
    • 重要信息:将参数可见性设置为隐藏
  • 这将在报告中创建与初始多值参数完全相同的第二个多值参数。默认情况下,此参数列表将选择所有值

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

    =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,", "))