SQL Reporting 2008;检查数组是否包含字符串

时间:2011-07-26 15:24:10

标签: reporting-services

在SQL Reporting 2008中,如何确定数组是否包含字符串?

示例,我希望以下内容返回“1”:

IIf(Split("a,b,c", ",").CONTAINS("a"), "1", "0")

什么可以用来取代上面的CONTAINS功能?这不可能吗?这个值是我表的FilterExpression。其目的是决定展示什么以及隐藏什么。

2 个答案:

答案 0 :(得分:3)

如果你只是在表达中寻找答案,我不是肯定的。但是,您可以编写.Net方法并将其称为来自报表的自定义dll或“代码”部分的表达式。如果使用内置代码,则可以执行以下操作:

http://www.vbforums.com/showthread.php?t=558440

在SSRS中创建内联代码或引用程序集:

http://bryantlikes.com/pages/824.aspx

更新: 从连接字符串中获取分隔值的示例:

http://www.dotnetperls.com/split-vbnet

更新:

这是您可以使用的功能。你把它放在报告的代码部分:

Public Function Contains(ByVal ItemToCheck As String, ByVal CommaValuesList As String, ByVal delimeter As Char) As Boolean
    Dim commaValues() As String = Split(CommaValuesList, delimeter, -1, CompareMethod.Text)

    For Each commavalue As String In commaValues
        If ItemToCheck.ToLower.Trim = commavalue.ToLower.Trim Then
            Return True
        End If
    Next

    Return False
End Function

使用以下语法引用它:

=code.Contains(param1,param2,param3)

答案 1 :(得分:0)

让我们使用MyLettersParameter作为多选参数。要确定它是否包含“ a”,请使用:

=Array.IndexOf(Parameters!MyLettersParameter.Value, "a") > -1

上面的代码返回truefalse。要返回“ 1”,请使用:

=IIf(Array.IndexOf(Parameters!MyLettersParameter.Value, "a") > -1, "1", "0")