首页 > 解决方案 > 如何使用多个 iif 更改颜色

问题描述

我在下面有文本框表达式,结果如下所示:
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,'');

标签: reporting-servicesssrs-2012

解决方案


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

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选择值。NULLNone

表达式应以设置为蓝色的字体颜色开始。接下来,您需要使用两个 SSRS 函数,LookupSet将返回数组中的所有值Fields!ID.Value,我们可以将其放入一个字符串中JoinJoin需要加入值和分隔符,在这种情况下,这是您正确格式化文本颜色的机会。定界 by"</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 标记解释为样式以使其正常工作。

下面是一个示例,说明当我使用上面的表达式和较浅的颜色来演示时它的外观:

例子


推荐阅读