SSRS-Условное форматирование текста (выражения с использованием Switch)


Я открою это, заявив, что выражения действительно работают в отчете. Проблема в том, что они не работают вместе.

В настоящее время у меня есть заголовок столбца, отформатированный на основе значений двух столбцов. Курсив и подчеркивание на основе значения столбца 1. Жирный и определенный цвет, основанный на значении столбца 2. Я делаю это с помощью выражений Switch в свойствах текста. Вот что у меня есть для каждого:

=Switch(Fields!Column1.Value <> "Specific Value","Italic",Fields!Column1.Value = "Specific Value","Normal")
=Switch(Fields!Column1.Value <> "Specific Value","Underline",Fields!Column1.Value = "Specific Value","None")
=Switch(Fields!Column2.Value <= 7,"ExtraBold",Fields!Column2.Value >=` 8,"Normal")
=Switch(Fields!Column2.Value <= 7, "Red",Fields!Column2.Value >= 8,"#586d7f")

И изображение, чтобы показать, что они все отмечено:

Введите описание изображения здесь

Когда я запускаю отчет, ошибок нет.

Самое странное (по крайней мере для меня), что результаты должны выглядеть так:

  1. нормальный
  2. жирный и красный
  3. курсив и подчеркивание
  4. все четверо (жирный, курсив, красный и подчеркнутый)

В ситуации, когда текст должен выглядеть как 4, он выглядит как 2. Все остальное работает так, как и должно быть. Я немного озадачен и хотел бы получить объяснение, почему это так. Я посмотрел, был ли ответ на этот вопрос раньше, но, судя по тому, что я видел, это не похоже. Если я использовал какую-то неправильную терминологию, я извиняюсь (я довольно новичок в этом).

1 2

1 ответ:

Вместо этого я бы использовал оператор IIF ().

=IIF(Fields!Column1.Value <> "Specific Value", "Italic", "Normal") 
Вообще говоря, switch-это оператор case для нескольких случаев, а оператор IIF-типичный оператор if, then, else. Опасность заключается в том, что вы можете вложить операторы IIF, такие как IIF(thing, 'set1', iif(thing2, 'set2', 'default')), но было бы проще сделать переключатель, такой как Switch(thing, 'set1, thing2, 'set2', 'default'). Проблема с переключателями заключается в том, что если происходит что-то, то происходит и то, и другое. другой он предполагает, что первый истинен и просто выполняет это. Таким образом, вы должны учитывать надлежащий порядок возникновения чего-либо, или это будет предполагать первую инстанцию. Обычно, когда у вас есть экземпляр чего-то и значение по умолчанию, я использую IIF. Если есть проблема с переключателем, я сделаю вложенный IIF вообще или переупорядочу события оператора Switch.

Я надеюсь, что это немного поможет.