在SSRS 2005 IIF表达式中使用Like运算符

时间:2012-05-31 16:15:44

标签: sql-server-2005 reporting-services

我在SSRS中有一个非常复杂的IIF表达式,其中我想改变单元格的背景颜色会根据某些条件而改变。它在当前状态下工作正常,但我试图为它添加一个Like条件......

所以,这就是现在的样子(工作):

 =IIf(inscope("matrix1_errorType"), 

IIf(

(
    FormatPercent(Sum(Fields!numberOfIssues.Value)/First(Fields!totalItems.Value),3) >= .0001 & "%" 
    And ( First(Fields!errorType.Value) = "TypeA")
)

Or 
(
    FormatPercent(Sum(Fields!numberOfIssues.Value)/First(Fields!totalItems.Value),3) >= .04 & "%" 
    And First(Fields!errorType.Value) = "TypeB"
)

Or 
(
    FormatPercent(Sum(Fields!numberOfIssues.Value)/First(Fields!totalItems.Value),3) >= .02 & "%" 
    And First(Fields!errorType.Value) = "TypeC"
    )
,
"Maroon", "Transparent")
, "Transparent")

我想要做的是在这一行的某处添加一个Like类型语句,它会说...和位置LIKE“Scan” - 换句话说,就是标题中某处有“Scan”的位置。 locationName也是我在报告中显示的字段。

(
    FormatPercent(Sum(Fields!numberOfIssues.Value)/First(Fields!totalItems.Value),3) >= .0001 & "%" 
    And ( First(Fields!errorType.Value) = "TypeA")
)

类似的陈述类似于:

... And ( First(Fields!errorType.Value) = "TypeA") And First(Fields!locationName.Value) Like "*Scan*"

但这不起作用。我也试过了:

And ( First(Fields!errorType.Value) = "TypeA" And First(Fields!locationName.Value.ToString().Contains("Scan")

哪个也不起作用。

我可以用SSRS 2005表达式做到这一点吗? 谢谢!

1 个答案:

答案 0 :(得分:3)

我认为你的问题是语法。双重检查()的放置,并在您的声明中作为包含对您正在尝试的内容起作用。

我也注意到你的陈述:

First(Fields!locationName.Value.ToString().Contains("Scan"))

应该是:

First(Fields!locationName.Value).ToString().Contains("Scan")

您还可以尝试IndexOf功能。 IndexOf返回您传递的字符串在源中出现的字符位置。因此,如果它大于(或等于)零,则字符串包含字符'Scan' - 如果小于零,则源不包含字符串。

Fields!YourField.Value.ToString().IndexOf("Scan") >= 0

虽然它与使用它的方式大致相同。