【问题标题】:Filter a field with concatenated values against a multi-value paramter in SSRS根据 SSRS 中的多值参数过滤具有串联值的字段
【发布时间】:2014-10-17 05:56:13
【问题描述】:

我的 SQL 数据集中有一个名为“ContactType”的字段。此字段有多个值并用“,”分隔符连接。

假设我有两条记录

Contact Type | RecordId
-------------|----------
A,B,C        | Record1
B,C,E        | Record2

现在在 SSRS 中,我有一个多值参数可用作 联系人类型 过滤器。选项将是

  • 一个
  • B
  • C
  • D
  • E
  • F

当我从过滤器中选择 A 和 B 时,我想检查上述记录中是否存在 A 或 (OR) B。这里的问题是ContactType 字段是单个文本字符串,但包含多个值。

如何根据多值参数中的值数组过滤ContactType字段中的值?

【问题讨论】:

    标签: reporting-services ssrs-2008


    【解决方案1】:

    我认为最好的方法是使用自定义代码编写一个简单的函数。可以从报告菜单访问自定义代码编辑器。

    然后使用这样的函数:

    Function CheckContactType(ContactTypeList AS String, ContactTypeFilter AS Parameter) As Boolean
        Dim contactTypes As String() = ContactTypeList.Split(",")
    
        For i As Integer = 0 To (ContactTypeFilter.Count-1)
            If contactTypes.Contains(ContactTypeFilter.Value(i)) Then Return True
        Next i
    
        Return False
    End Function
    

    那么你的过滤表达式会是这样的:

    =Code.CheckContactType(Fields!ContactType.Value, Parameters!ContactTypeFilterParameter)
    

    你可以使用= 操作符来处理value 表达式:

    =True
    

    自定义代码功能正在使用 .NET String.Split()Array.Contains() 方法。这些 MSDN 页面非常适合详细了解 SSRS 报告中的自定义代码:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-18
      • 2019-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多