1

Je rencontre un problème avec les expressions dans les rapports. Je colorie l'arrière-plan d'une zone de texte dans une table en fonction de sa valeur. Le texte dans le champ concerne les sauvegardes pour un serveur SQL. La valeur est soit une date, soit le texte "Not Yet Taken". Si la date est antérieure à 2 jours, je souhaite que l'arrière-plan soit jaune. Si c'est plus d'une semaine ou si la valeur de la date est "Pas encore prise", je veux que l'arrière-plan soit rouge. Sinon, ce sera vert. Le problème que j'ai eu depuis que j'ai commencé avec les rapports pour SSRS (il y a quelques semaines) est que mes expressions semblent être complètement évaluées. Une déclaration IF aura ses deux valeurs vraies et fausses évaluées même si un seul d'entre eux sera utilisé.SSRS Expression Evaluation Issue Numéro

Cela devient un problème car "Not Yet Taken" n'est clairement pas une date et de 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, fondamentalement, l'expression se lit comme suit: « Si LastBackUpTaken.Value = « Pas encore Taken »., Le retour de la couleur rouge S'il est « pas encore pris », Chèque pour voir si la chaîne est une date.S'il ne s'agit pas d'une date, renvoyez la couleur Rouge.S'il s'agit d'une date, faites des calculs et renvoyez la couleur appropriée

Cette expression fonctionne pour tous les champs de texte qui ne contiennent pas de données. Pour les champs dont le texte est "Not Yet Taken", il n'y a pas d'ensemble de couleurs

EDIT: J'ai aussi une erreur de conversion o mentionner, chaque fois que le texte est "Pas encore pris"

Des idées?

Répondre

4

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 de cas, instructions régulières, etc.). Logique avec être plus facile à lire aussi bien.

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

Dans l'expression de la propriété couleur de fond:

=Code.GetBackgroundColor(Fields!LastBackUpTaken.Value) 
+0

Merci! Je connaissais le code mais je ne l'aimais pas beaucoup après avoir essayé de le faire fonctionner avec les paramètres du rapport comme je le voulais. Je n'ai pas pensé à une solution mais cela fonctionne à merveille. –