条件过滤器SSRS

时间:2012-05-16 05:48:33

标签: reporting-services ssrs-2008

我的情况是

  1. 我有一个参数,这是一个列表,允许多个值。这意味着列表中的第一条记录是“全选”

  2. 当用户选择全部时,我需要在报告中包含与列表匹配的所有记录以及空白的记录。 (我的数据集正在返回这些)

  3. 当用户只选择1个或几个时,我只想包含这些记录。没有那些空白的

  4. 我的问题: 我的数据集中有一个过滤器来评估列表中的参数,但我需要添加一个条件过滤器,以便在选择“全选”时包含空白记录 我尝试使用表达式,但这不起作用

    过滤表达式 Fields!NAME.Value in = Parameters!List.Value !!!!!!!!!!!!工作正常

    但我需要像

    一样改变它
    If Parameters!List.Value  =  'Select All' Then
       Fields!NAME.Value in = Parameters!List.Value  or Fields!NAME.Value = " "
    Else
       Fields!NAME.Value in = Parameters!List.Value
    End
    

    你能给我一个建议,我可以解决它吗!!!

    我在SSRS R2工作

    谢谢!

4 个答案:

答案 0 :(得分:4)

这对我有用

表达式:= IIF(参数!pLocation.Value<>“所有位置”,字段!LOCATION.Value,FALSE)
接线员:=
值:= IIF(参数!pLocation.Value<>“所有位置”,参数!pLocation.Value,FALSE)

答案 1 :(得分:2)

如果您在数据集上使用过滤器,请尝试以下操作:

Expression: [NAME]
Operator: IN
Value (fx): =Split(Replace(Join(Parameters!List.Value, ","), "Select All", " "), ",")

尝试沿着这条路走下去。基本上,您可以使用Join()将多值项重建为字符串,并使用Split()将其再次解构为数组;介于两者之间,您可以操纵它们,进行修改(例如将“全部选择”转换为“”),添加(模仿“或”)或删除多余的项目。

答案 2 :(得分:1)

还有另一种选择。

在参数数据集值中再添加一个项,将“不可用”作为标签,将值添加为null。然后,存储过程将不会发生任何变化,您可以检索数据。 如果用户选择特定项目,那么他将仅获得这些值。如果他选择了all,那么他将获得null的数据以及所有其他数据。

希望这会有所帮助

答案 3 :(得分:1)

如果你这样做,你可以把逻辑放在一个位置。 您对参数进行过滤,除非它是所有值,否则过滤器始终匹配。 只是一点清洁。

Expression:= IIF(参数!pLocation.Value<>“All Locations”,Fields!LOCATION.Value,“All Locations”)

接线员:=

值:=参数!pLocation.Value