【问题标题】:conditional filter SSRS条件过滤器 SSRS
【发布时间】:2014-03-03 06:43:51
【问题描述】:

我的情况是

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

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

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

我的问题: I have a filter in my dataset that evaluate a parameter in a list, but I need to add a conditional filter to include a blank records when the selection will be "Select All" 我尝试使用表达式,但这不起作用

过滤表达式 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 工作

谢谢!!

【问题讨论】:

    标签: reporting-services ssrs-2008


    【解决方案1】:

    这对我有用

    表达式:=IIF(Parameters!pLocation.Value "All Locations", Fields!LOCATION.Value, FALSE)
    运算符:=
    值:=IIF(Parameters!pLocation.Value "所有位置", Parameters!pLocation.Value, FALSE)

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        有一个替代方案。

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

        希望这会有所帮助

        【讨论】:

        • 我不认为这是一个解决方案,我的数据集工作正常,也返回空记录,我在我的 SSRS 中过滤/包含这些很复杂,具体取决于用户是否“全选”或者没有。
        • 我想知道如何在 SSRS 2008 中编写类似过滤器的内容 If Parameters!List.Value = 'Select All' Then Fields!NAME.Value in = Parameters!List.Value OR Fields !NAME.Value = " " 其他字段!NAME.Value in = Parameters!List.Value End
        • 使用 Select All 您无法检查条件,这就是我说要为参数添加值的原因。在 SP 中,您可能会像“Value Is NULL OR Value IN (@ParamValueList)”这样的检查。这就是它返回空值的原因。我使用这个过程来过滤数据。
        • 你的意思是我必须在 SP 而不是 SSRS 中制作过滤器?
        • 是的,假设您将 Labkes 的参数设置为 XXX、YYY、ZZZ 和 1、2、3 作为其值,然后添加不可用。现在参数包含标签为 XXX,YYY,ZZZ,NotAvailable,值为 1,2,3,null。使用参数数据集中的联合来实现您从中获取值的目的。在 SP 中,您将检查值 IN (@ParamValueList)。如果他选择全部,那么它将包括“不可用”,因此值 null 也将在列表中。在性能方面,SP 中的过滤将比 SSRS 中更快。
        【解决方案4】:

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

        表达式:=IIF(Parameters!pLocation.Value "All Locations", Fields!LOCATION.Value, "All Locations")

        操作员:=

        值:=Parameters!pLocation.Value

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-03-07
          • 1970-01-01
          • 2015-03-15
          • 2021-11-20
          • 2018-04-12
          • 2017-06-13
          • 2017-12-01
          相关资源
          最近更新 更多