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