SSRS 2008报表生成器:有条件地关闭Tablix过滤器

时间:2013-03-18 18:31:33

标签: tsql sql-server-2008-r2 ssrs-2008 reporting-services

是否可以根据选择的参数关闭Tablix过滤器?如果一个值为null,我希望过滤我的数据,但如果不同的值为null,我希望我的数据不被过滤。用户输入开始日期,结束日期和Shift OR VCN。所有4个参数都可以设置为null。前3个参数查找一系列值的平均值。所以我设置了Tablix过滤器来从数据中删除异常值。例如,它只允许某个范围内的数字。但是,当用户输入VCN时,它会提取一条记录,所以我不希望任何数据被过滤,即使它是异常值,因为有时候它不会返回任何值。

3 个答案:

答案 0 :(得分:3)

是的,你可以用这个小小的工作。

  1. 在Tablix的过滤器选项中选择要过滤的字段,例如[Field1]
  2. 将运营商设置为=
  3. 在value选项中设置一个类似于下面的表达式,如果在关注的参数中没有设置任何内容,则该过滤器将使过滤器无效:

    =IIf(IsNothing(Parameter!MyPar1.Value), Field!Field1.Value, Parameter!MyPar1.Value)
    

  4. 在评论之后,如果您假设VCN参数仅在VCN过滤器有意的情况下为空,那么我会将以下过滤器应用于Tablix。

    对于日期过滤器:

    • 字段:[Date]
    • 接线员:>=
    • 公式:=IIf(IsNothing(Parameter!VCN.Value), Parameter!StartDate.Value, Field!Date.Value)

    第二个日期过滤器:

    • 字段:[Date]
    • 接线员:<=
    • 公式:=IIf(IsNothing(Parameter!VCN.Value), Parameter!EndDate.Value, Field!Date.Value)

    对于转换过滤器:

    • 字段:[Shift]
    • 接线员:=
    • 公式:=IIf(IsNothing(Parameter!VCN.Value), Parameter!Shift.Value, Field!Shift.Value)

    对于 VCN 过滤器:

    • 字段:[VCN]
    • 接线员:=
    • 公式:=IIf(IsNothing(Parameter!VCN.Value), Field!VCN.Value, Parameter!VCN.Value)

答案 1 :(得分:0)

我会重新设计过滤器以返回布尔值并将值设置为True。然后在Filter Expression中,您可以使用Iif函数检查您的Parameter并返回True(包含)或False(排除)。

对于简单的过滤器来说,这通常是一种更好的策略,因为数据类型转换等是奇怪的和易变的。

答案 2 :(得分:0)

我做了一个工作,只是创建了一个新表,然后根据表达式隐藏了我的其他表。