如何使用多个 iif 改变颜色

How to change color with mutiple iif

我在下面有文本框表达式,结果如下所示:
Newtoy - Oldtoy - Notoy
我可以让所有文本变成蓝色,但我希望 "dash sign" (-) 变成黑色。
我的表达不正确。能不能帮忙看看哪里出了问题。谢谢你。

="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,'');

好的,既然我明白了为什么要按原样格式化数据,我已经找到了一个适合您的解决方案。基本上,要完成这项工作,您需要将数据集中的查询修改为以下内容:

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 中连接,每个值之间具有字体格式。它还使用 ISNULL 函数计算 NULL 值,该函数将在 [=44] 时检查每个 ID 和 select NULL 值作为 None =]s 值。

表达式的开头字体颜色应设置为蓝色。接下来,您需要使用两个 SSRS 函数,LookupSet 将 return 数组中 Fields!ID.Value 的所有值,我们可以使用 Join 将其放入一个字符串中。 Join 需要连接值和分隔符,在这种情况下,您有机会正确设置文本颜色的格式。用 "</font><font color = 'black' size = 1>-</font><font color = 'blue' size = 1>" 分隔将关闭第一个 <font> 标签,它应该使第一个 ID 变成蓝色,插入黑色破折号,并为下一个 [=15] 打开一个新的 <font> 标签=],等等。最后,您添加一个结束 </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 标签解释为样式,这样才能正常工作。

这里有一个例子,当我使用上面的表达式和较浅的颜色来演示时它的样子: