使用SSRS中的多值参数对连锁值过滤字段

时间:2014-10-16 12:15:09

标签: reporting-services ssrs-2008

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

假设我有两条记录

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

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

  • A
  • C
  • d
  • 电子
  • ˚F

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

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

1 个答案:

答案 0 :(得分:0)

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

然后使用这样的函数:

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)

您可以对表达式使用=运算符:

=True

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