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