Frage

ich habe ein Problem mit Ausdrücken in Berichten. Ich Färbung des Hintergrunds einer Textbox in einer Tabelle in Abhängigkeit vom Wert innerhalb dieser Gruppe. Der Text im Feld bezieht sich auf Sicherungen für einen SQL Server. Der Wert ist entweder ein Datum oder der Text „Noch nicht genommen“. Wenn das Datum mehr als 2 Tage alt ist, möchte ich den Hintergrund gelb. Wenn es mehr als eine Woche alt oder wenn der Datumswert ist „Noch nicht genommen“, möchte ich den Hintergrund rot. Andernfalls wird es grün sein.

Das Problem, das ich habe, seit ich mit Berichten für SSRS (vor einigen Wochen) gestartet ist, dass mein Ausdrücke scheint vollständig ausgewertet werden. Eine IF-Anweisung wird sowohl seine wahre und falsche Werte selbst ausgewertet, obwohl nur einer von ihnen verwendet werden.

Dies wird zu einem Problem, weil „sie noch nicht“ eindeutig kein Datum ist und mit den Daten, die ich das Datum in ein Datum umwandeln müssen zu arbeiten. Hier ist der Code Ich habe zur Zeit:

=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"))

Also im Grunde liest der Ausdruck „Wenn LastBackUpTaken.Value =‚Noch nicht genommen‘, kehrt die Farbe Rot. Wenn dies nicht der Fall‚Noch nicht genommen‘, um zu sehen, wenn die Zeichenfolge ein Datum ist. Wenn es isn ‚t ein Datum, gibt die Farbe Rot. Wenn es ein Datum keine Berechnungen ist und die entsprechende Farbe zurück.

Diese Ausdrücke Werke für alle Textfelder, die „noch nicht statt“ als Text nicht haben. Für die Felder, die als Text „Noch nicht genommen“ haben keine Farbe gesetzt hat.

EDIT: Ich habe auch einen Konvertierungsfehler, die ich vergaß zu erwähnen, sobald der Text „Noch nicht genommen“

Irgendwelche Ideen?

War es hilfreich?

Lösung

Schreiben Sie eine VB-Funktion die Farbe Zeichenfolge in der Registerkarte Code der Berichtseigenschaften zurückzukehren. Hier können Sie Sprachkonstrukte verwenden Sie sind komfortabel mit (case-Anweisungen, regelmäßige if-Anweisungen, etc.). Logik mit einfacher als auch zurück zu lesen.

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

In dem Ausdruck für die Hintergrundfarbe Eigenschaft:

=Code.GetBackgroundColor(Fields!LastBackUpTaken.Value)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top