1

我在报表中遇到表达式问题。我根据其中的值为表格中的文本框背景着色。该字段中的文本涉及SQL Server的备份。该值是日期或文本“尚未采取”。如果日期超过2天,我想让背景变成黄色。如果它的一周以上或日期值为“尚未采用”,我希望背景为红色。否则,它会变成绿色。SSRS表达式评估问题

,因为我开始为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 =‘尚未采取’,返回红色如果不是‘尚未采取’检查以查看字符串是否为日期如果不是日期,则返回红色如果日期是计算并返回相应颜色

此表达式适用于所有文本字段, t“还未拍摄”作为其文本,对于那些确实有“还未拍摄”的字段,因为其文本没有任何颜色设置。 o提及,无论何时文本“尚未采取”

任何想法?

回答

4

编写VB函数返回报表属性的代码标签中的颜色字符串。在这里,您可以使用您熟悉的语言结构(case语句,常规if语句等)。逻辑更容易阅读。

Public Function GetBackgroundColor(ByVal DateString as String) As String 
    'plain old vb syntax here 
End Function 

在背景色属性的表达式:

=Code.GetBackgroundColor(Fields!LastBackUpTaken.Value) 
+0

谢谢!我知道这个代码,但并不是很喜欢它,它试图按照我希望的方式使用Report参数。没有想到这个解决方案,但它奇妙地工作。 – 2008-11-28 18:58:11