如何使用多个 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 标签解释为样式,这样才能正常工作。
这里有一个例子,当我使用上面的表达式和较浅的颜色来演示时它的样子:
我在下面有文本框表达式,结果如下所示:
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 标签解释为样式,这样才能正常工作。
这里有一个例子,当我使用上面的表达式和较浅的颜色来演示时它的样子: