如何使用多个iif更改颜色

时间:2019-01-28 17:52:26

标签: reporting-services ssrs-2012

我在下面有文本框表达式,结果如下所示:
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 :(得分: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中以每个值之间的字体格式结合在一起。它还使用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蓝色,插入黑色破折号,并为下一个{{1 }}, 等等。最后,您添加了一个结束<font>标签,以将最后一个ID涂成蓝色。

</font>

我已经对此进行了测试,它似乎可以正常工作。但是,您需要确保在标记类型设置为HTML的占位符中使用此表达式,以将HTML标签解释为样式才能起作用。

这是当我使用上面的表达式以浅色来演示时的外观示例:

example