2012-05-31 3 views
2

У меня довольно сложное выражение IIF в SSRS, в котором я хочу изменить цвет фона ячейки, будет меняться в зависимости от определенных условий. Он отлично работает в своем нынешнем состоянии, но я пытаюсь добавить Like состояние к нему ...Использование как оператор в SSRS 2005 Выражение IIF

так, вот что она выглядит сейчас (рабочий):

=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") 

Что я хотел бы do - добавить инструкцию типа Like в этой строке, которая скажет ... и местоположение LIKE «Сканирование» - другими словами, место с «Сканировать» где-то в заголовке. locationName - это поле i, отображаемое в отчете.

(
    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?
Спасибо!

ответ

3

Я думаю, что ваша проблема - синтаксис. Двойные проверки мест размещения() и, в вашем заявлении, как Содержит, должны работать на то, что вы пытаетесь.

Я также заметил, ваше заявление:

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

, вероятно, следует:

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

Вы также можете попробовать функцию IndexOf. IndexOf возвращает позицию символа, в которой строка, которую вы передаете, происходит в источнике. Поэтому, если он больше нуля (или равен нулю), ваша строка содержит символы «Сканировать» - если меньше нуля, источник не содержит строку.

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

Хотя он работает примерно так же, как Содержит то, как вы его используете.

+0

Удивительный! А также спасибо за объяснение IndexOf. Теперь имеет смысл! – SeanFlynn

+0

Сладость! Это просто разрешило мне совершенно другую проблему, в которой мне нужно было условно отобразить столбец таблицы на основе значения идентификатора клиента. Спасибо RThomas. – DJGray

Смежные вопросы