Tsql SSRS 2008报表生成器:有条件地关闭Tablix筛选器

Tsql SSRS 2008报表生成器:有条件地关闭Tablix筛选器,tsql,sql-server-2008-r2,ssrs-2008,reporting-services,Tsql,Sql Server 2008 R2,Ssrs 2008,Reporting Services,是否可以根据选择的参数关闭Tablix过滤器?如果一个值为null,我希望筛选数据,但如果另一个值为null,我希望不筛选数据。用户输入开始日期、结束日期和班次或VCN。所有4个参数都可以设置为null。前3个参数找到一系列值的平均值。所以我设置了Tablix过滤器来从数据中删除异常值。例如,它只允许一定范围内的数字。但是,当用户输入VCN时,它将调出一条记录,因此我不希望任何数据被过滤,即使它是异常值,因为有时它将不返回任何值。我将重新设计过滤器以返回布尔值并将值设置为真。然后在过滤器表达式中

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

我将重新设计过滤器以返回布尔值并将值设置为真。然后在过滤器表达式中,可以使用Iif函数检查参数并返回True(包括)或False(排除)


这通常是一个更好的策略,即使是简单的过滤器,因为数据类型转换等都很奇怪和变化无常。

是的,您可以通过这一点解决方法

  • 在tablix上的过滤器选项中选择要过滤的字段,例如
    [Field1]
  • 将运算符设置为
    =
  • 在“值”选项中,设置一个类似于以下的表达式,如果相关参数中未设置任何内容,则该表达式将使过滤器无效:

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

  • 在注释之后,如果仅当打算使用
    VCN
    过滤器时,才假定
    VCN
    参数为空,则我将对tablix应用以下过滤器

    对于日期过滤器:

    • 字段:
      [Date]
    • 操作员:
      =
    • 公式:
      =IIf(IsNothing(参数!VCN.Value),参数!StartDate.Value,字段!Date.Value)
    第二个日期过滤器:

    • 字段:
      [Date]

    • 运算符:
      我做了一个变通,只是创建了一个新表,然后根据表达式隐藏了我的其他表

      您能提供更多信息吗?用户输入开始日期、结束日期和班次或VCN。所有4个参数都可以设置为null。前3个参数找到一系列值的平均值。所以我设置了Tablix过滤器来从数据中删除异常值。但是,当用户输入VCN时,它将提取单个记录,因此我不希望任何数据被过滤,即使它是异常值,因为有时它将不返回任何值。我的情况是,对于每个表,我有3个过滤器。我的用户输入开始日期、结束日期和班次,也可以只输入VCN编号。如果他们输入VCN编号,我希望过滤器关闭。我允许用户将其他设置为null,然后输入VCN。我如何将您的解决方案应用于我的情况?