1

レポート内の式に問題があります。テーブル内の値に応じて、テーブル内のテキスト ボックスの背景に色を付けています。フィールド内のテキストは、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日付の場合は、赤の色を返します。日付の場合は、計算を行い、適切な色を返します。

この式は、「未取得」をテキストとして持たないすべてのテキスト フィールドで機能します。テキストとして「まだ取得されていません」と表示されているフィールドには、色が設定されていません。

編集:テキストが「未取得」の場合は常に、言及するのを忘れていた変換エラーも発生します

何か案は?

4

1 に答える 1

3

レポートプロパティの[コード]タブでカラー文字列を返すVB関数を記述します。ここでは、使い慣れた言語構造(caseステートメント、通常のifステートメントなど)を使用できます。ロジックも読みやすくなっています。

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

背景色プロパティの式では、次のようになります。

=Code.GetBackgroundColor(Fields!LastBackUpTaken.Value)
于 2008-11-28T18:03:56.013 に答える