2

我在 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 类型的语句,它会说 ...and location LIKE “Scan” - 换句话说,一个在标题中某处带有“Scan”的位置。locationName 也是我在报告中显示的字段。

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

like 语句类似于:

... 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 表达式中做到这一点?
谢谢!

4

1 回答 1

3

我认为你的问题是语法。仔细检查 () 和 , 在您的声明中作为 Contains 的位置应该适用于您正在尝试的内容。

我也注意到你的说法:

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

应该是:

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

你也可以试试这个IndexOf功能。IndexOf 返回您传递的字符串在源中出现的字符位置。因此,如果它大于(或等于)零,则您的字符串包含字符“扫描” - 如果小于零,则源不包含该字符串。

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

尽管它的工作方式与您使用它的方式大致相同。

于 2012-05-31T17:23:19.023 回答