レポート内の式に問題があります。テーブル内の値に応じて、テーブル内のテキスト ボックスの背景に色を付けています。フィールド内のテキストは、SQL Server のバックアップに関連しています。値は、日付または「未取得」というテキストです。日付が 2 日以上経過している場合は、背景を黄色にしたいと考えています。1 週間以上経過している場合、または日付の値が「未取得」の場合は、背景を赤くしたいと考えています。それ以外の場合は、緑色になります。
SSRS のレポートを開始してから (数週間前)、私が抱えていた問題は、式が完全に評価されているように見えることです。IF ステートメントは、true 値と false 値の両方が評価されますが、そのうちの 1 つだけが使用されます。
「未取得」は明らかに日付ではなく、日付を操作するには日付文字列を日付に変換する必要があるため、これは問題になります。ここに私が現在持っているコードがあります:
=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", return color Red. If it's not yet Taken, the string is a date. If it's not a日付の場合は、赤の色を返します。日付の場合は、計算を行い、適切な色を返します。
この式は、「未取得」をテキストとして持たないすべてのテキスト フィールドで機能します。テキストとして「まだ取得されていません」と表示されているフィールドには、色が設定されていません。
編集:テキストが「未取得」の場合は常に、言及するのを忘れていた変換エラーも発生します
何か案は?