【发布时间】:2008-11-28 16:42:37
【问题描述】:
我在报告中遇到了表达式问题。我根据表格中的值为表格中的文本框的背景着色。该字段中的文本与 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"))
所以基本上,表达式为“If LastBackUpTaken.Value = “Not Yet Taken”,返回红色。如果不是“Not Yet Taken”,检查字符串是否为日期。如果是'不是日期,返回红色。如果是日期,进行计算并返回适当的颜色。
此表达式适用于所有没有“尚未采用”作为其文本的文本字段。对于文本为“尚未采用”的字段,没有任何颜色设置。
编辑:每当文本为“尚未采用”时,我也会收到一个我忘记提及的转换错误
有什么想法吗?
【问题讨论】:
标签: reporting-services evaluation expression operator-precedence