我正在用C#编写的程序中创建RDLC报告。它从MySQL服务器获取数据,并将其提供给报告。此数据的一部分是一个字符串,用于存储报表上文本框背景的十六进制值。如果背景色太暗,我需要一个用于文本框前景的表达式来动态更改文本的颜色。我不知道以前报告中的颜色(即基于特定颜色的Switch语句不起作用)
我当时想尝试将字符串的红色绿色和蓝色值分开,并逻辑地说:
IF([红色和蓝色太低]或[红色和绿色太低]或[蓝色和绿色太低]) 然后 (将前景色设置为白色) 其他 (将前景色设置为黑色)
文本颜色的表达式将类似于:
= IIF(Fields!reportColorCode.Value [条件-这是我遇到的地方],“#FFFFFF”,“#000000”)
我们将不胜感激任何帮助,或者有任何疑问来澄清我的工作。
谢谢!
答案 0 :(得分:0)
我已经弄清楚了我想做的事情,这是我想出的,并不是很有效,但是它解析了十六进制字符串(例如“#EDF32A”),并查看了第二,第四和第六字符,并且如果第二,第四和第六个字符中的两个同时等于1,2,3,4,5,6或7,则颜色足够深,可以将文本更改为白色。
=IIF(
(
(
MID(Fields!reportColorCode.Value, 2, 1) = "0" OR
MID(Fields!reportColorCode.Value, 2, 1) = "1" OR
MID(Fields!reportColorCode.Value, 2, 1) = "2" OR
MID(Fields!reportColorCode.Value, 2, 1) = "3" OR
MID(Fields!reportColorCode.Value, 2, 1) = "4" OR
MID(Fields!reportColorCode.Value, 2, 1) = "5" OR
MID(Fields!reportColorCode.Value, 2, 1) = "6" OR
MID(Fields!reportColorCode.Value, 2, 1) = "7"
)
AND
(
MID(Fields!reportColorCode.Value, 4, 1) = "0" OR
MID(Fields!reportColorCode.Value, 4, 1) = "1" OR
MID(Fields!reportColorCode.Value, 4, 1) = "2" OR
MID(Fields!reportColorCode.Value, 4, 1) = "3" OR
MID(Fields!reportColorCode.Value, 4, 1) = "4" OR
MID(Fields!reportColorCode.Value, 4, 1) = "5" OR
MID(Fields!reportColorCode.Value, 4, 1) = "6" OR
MID(Fields!reportColorCode.Value, 4, 1) = "7"
)
)
OR
(
(
MID(Fields!reportColorCode.Value, 2, 1) = "0" OR
MID(Fields!reportColorCode.Value, 2, 1) = "1" OR
MID(Fields!reportColorCode.Value, 2, 1) = "2" OR
MID(Fields!reportColorCode.Value, 2, 1) = "3" OR
MID(Fields!reportColorCode.Value, 2, 1) = "4" OR
MID(Fields!reportColorCode.Value, 2, 1) = "5" OR
MID(Fields!reportColorCode.Value, 2, 1) = "6" OR
MID(Fields!reportColorCode.Value, 2, 1) = "7"
)
AND
(
MID(Fields!reportColorCode.Value, 6, 1) = "0" OR
MID(Fields!reportColorCode.Value, 6, 1) = "1" OR
MID(Fields!reportColorCode.Value, 6, 1) = "2" OR
MID(Fields!reportColorCode.Value, 6, 1) = "3" OR
MID(Fields!reportColorCode.Value, 6, 1) = "4" OR
MID(Fields!reportColorCode.Value, 6, 1) = "5" OR
MID(Fields!reportColorCode.Value, 6, 1) = "6" OR
MID(Fields!reportColorCode.Value, 6, 1) = "7"
)
)
OR
(
(
MID(Fields!reportColorCode.Value, 6, 1) = "0" OR
MID(Fields!reportColorCode.Value, 6, 1) = "1" OR
MID(Fields!reportColorCode.Value, 6, 1) = "2" OR
MID(Fields!reportColorCode.Value, 6, 1) = "3" OR
MID(Fields!reportColorCode.Value, 6, 1) = "4" OR
MID(Fields!reportColorCode.Value, 6, 1) = "5" OR
MID(Fields!reportColorCode.Value, 6, 1) = "6" OR
MID(Fields!reportColorCode.Value, 6, 1) = "7"
)
AND
(
MID(Fields!reportColorCode.Value, 4, 1) = "0" OR
MID(Fields!reportColorCode.Value, 4, 1) = "1" OR
MID(Fields!reportColorCode.Value, 4, 1) = "2" OR
MID(Fields!reportColorCode.Value, 4, 1) = "3" OR
MID(Fields!reportColorCode.Value, 4, 1) = "4" OR
MID(Fields!reportColorCode.Value, 4, 1) = "5" OR
MID(Fields!reportColorCode.Value, 4, 1) = "6" OR
MID(Fields!reportColorCode.Value, 4, 1) = "7"
)
)
,"#FFFFFF", "#000000"
)