Question

J'ai un problème avec les expressions dans les rapports. Je colore l'arrière-plan d'une zone de texte dans un tableau en fonction de la valeur qu'il contient. Le texte dans le champ concerne les sauvegardes pour un serveur SQL. La valeur est soit une date, soit le texte "Pas encore pris". Si la date a plus de 2 jours, je veux que le fond soit jaune. Si sa date est supérieure à une semaine ou si la date est "Pas encore pris", je veux que l'arrière-plan soit rouge. Sinon, ce sera vert.

Le problème que j'ai depuis que j'ai commencé à générer des rapports pour SSRS (il y a quelques semaines) est que mes expressions semblent être complètement évaluées. Une instruction IF aura ses deux valeurs true et false évaluées même si une seule d'entre elles sera utilisée.

Cela devient un problème car "Pas encore pris". est clairement pas une date et pour travailler avec les dates dont j'ai besoin pour convertir la chaîne de date en une date. Voici le code que j'ai actuellement:

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

Donc, en gros, l'expression lit "If LastBackUpTaken.Value =" Pas encore prise ", retourne la couleur rouge. S'il ne s'agit pas de "Pas encore pris", vérifiez si la chaîne est une date. Si ce n'est pas une date, retourne la couleur rouge. S'il s'agit d'une date, effectuez les calculs et renvoyez la couleur appropriée.

Cette expression fonctionne pour tous les champs de texte qui n'ont pas "Pas encore pris". comme son texte. Pour les champs qui ont " pas encore pris " comme son texte n’a aucun jeu de couleurs.

EDIT: je reçois également une erreur de conversion que j'ai oublié de mentionner chaque fois que le texte est "Pas encore pris"

Des idées?

Était-ce utile?

La solution

Ecrivez une fonction VB pour renvoyer la chaîne de couleur dans l’onglet Code des Propriétés du rapport. Ici, vous pouvez utiliser des constructions de langage avec lesquelles vous êtes à l'aise (instructions case, instructions if régulières, etc.). La logique sera également plus facile à lire.

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

Dans l'expression de la propriété de couleur d'arrière-plan:

=Code.GetBackgroundColor(Fields!LastBackUpTaken.Value)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top