我对报告中的表达式有疑问。我正在根据表格中的值为表格中的文本框的背景着色。该字段中的文本与 SQL Server 的备份有关。该值是日期或文本“尚未采取”。如果日期超过 2 天,我希望背景为黄色。如果它超过一周或日期值为“尚未采取”,我希望背景为红色。否则,它将是绿色的。
自从我开始编写 SSRS 报告(几周前)以来,我一直遇到的问题是我的表达似乎得到了充分评估。一个 IF 语句将同时评估其真值和假值,即使只使用其中一个。
这成为一个问题,因为“尚未采取”显然不是日期,并且要使用我需要将日期字符串转换为日期的日期。这是我目前的代码:
=IIF(Fields!LastBackUpTaken.Value = "Not Yet Taken","Red", IIF( IsDate(Fields!LastBackUpTaken.Value) = true,
IIF( CDate(Fields!LastBackUpTaken.Value).AddDays(Parameters!DaysTillExpiry.Value).CompareTo(NOW()) = 1,
"GreenYellow",
IIF( CDate(Fields!LastBackUpTaken.Value).AddDays(7).CompareTo(NOW()) = 1, "Yellow", "Red")),
"Red"))
所以基本上,表达式为“如果 LastBackUpTaken.Value = “Not Yet Taken”,则返回红色。如果不是“Not Yet Taken”,则检查字符串是否为日期。如果不是日期,返回红色。如果是日期,则进行计算并返回适当的颜色。
此表达式适用于所有没有“尚未采用”作为其文本的文本字段。对于将“尚未采用”作为其文本的字段,没有任何颜色设置。
编辑:每当文本为“尚未采用”时,我也会收到一个我忘记提及的转换错误
有任何想法吗?