Как изменить цвет с помощью функции mutiple iif - PullRequest
0 голосов
/ 28 января 2019

У меня есть текстовое поле ниже, результат выглядит следующим образом:
Newtoy - Oldtoy - Notoy
Я могу получить весь текст синим цветом, но я хочу, чтобы «знак тире» (-) стал чернымцвет.
Мое выражение неверно.Можете ли вы помочь увидеть, что пошло не так.Спасибо.

="font color = 'blue' size = '1'" 
& iif(First(Fields!ID.Value, "DataSet2") = " " ,"None", First(Fields!ID.Value, "DataSet2"))+ "/font",

= iif(First(Fields!ID.Value, "DataSet2") = "-" ,"black", "blue",

И это запрос, заполняющий набор данных:

SELECT STUFF((SELECT CAST(b.branch as varchar) +' '+ ' | ' +' ' 
FROM printers p 
full join branch b on p.branchid = b.branchid 
where p.printername is null 
order by b.branch FOR XML PATH(''), TYPE).value('.', 'varchar(max)'),2,1,'');

1 Ответ

0 голосов
/ 29 января 2019

Хорошо, теперь, когда я понимаю, почему данные отформатированы как есть, я нашел решение, которое должно работать для вас.В основном, чтобы это работало, вам нужно изменить запрос из набора данных следующим образом:

SELECT CAST(ISNULL(b.branch, 'None') as varchar)
FROM printers p 
FULL JOIN branch b ON p.branchid = b.branchid WHERE p.printername IS NULL 
ORDER BY b.branch 

Это предоставит значения b.branch таким образом, чтобы их можно было объединить в SSRS сформатирование шрифта между каждым значением.Он также учитывает значения NULL с помощью функции ISNULL, которая проверяет каждый ID и выбирает значения NULL как None, когда возвращает значения.

Выражение должно начинаться со шрифтацвет установлен на синий.Далее вам нужно будет использовать две функции SSRS, LookupSet вернет все значения Fields!ID.Value в массиве, который мы можем поместить в одну строку с помощью Join.Join требует значений для объединения и разделителя, что в этом случае дает вам возможность правильно отформатировать цвет текста.Разделение на "</font><font color = 'black' size = 1>-</font><font color = 'blue' size = 1>" закроет первый тег <font>, который должен сделать первый ID синим, вставит черную черту и откроет новый тег <font> для следующего ID, и так далее.Наконец, вы добавляете закрывающий тег </font>, чтобы закончить закрашивать окончательный ID синим цветом.

="<font color = 'blue' size = 1>" 
& Join(LookupSet(1, 1, Fields!ID.Value, "DataSet2"), "</font><font color = 'black' size = 1>-</font><font color = 'blue' size = 1>") & "</font>"

Я проверил это, и похоже, что оно работает.Однако вам нужно быть уверенным, что вы используете это выражение в заполнителе с типом разметки, установленным на HTML, чтобы интерпретировать теги HTML как стили, чтобы это работало.

Вот пример того, как это выглядит при использованиивышеприведенное выражение с более светлым цветом для демонстрации:

example

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...