2010-06-21 2 views
0

Cette expression toujours imprimer #Erreur sur mon rapportcette expression toujours imprimer #Erreur

=IIF(ISNOTHING(Fields!f2.Value)," ", Fields!f2.Value* Fields!If3.Value) 
+1

Je suppose que vous essayez de multiplier les données non numériques. Quels sont les types de données de f2 et f3? – AlexCuse

+0

Cette question est pour la réponse de [Report Viewer Expression] (http://stackoverflow.com/questions/3087082/report-viewer-expression) – gbn

Répondre

0

Les paramètres à IIF sont toujours évalués indépendamment de la valeur du test. Brisons l'expression pour voir ce qui se passe.

P1 = ISNOTHING(Fields!f2.Value) // this gets evaluated and "True" is the value 
P2 = Fields!f2.Value * Fields!If3.Value // this gets evaluated and throws an #Error 
Result = IIF(P1," ",P2) // this never gets evaluated because an error is already thrown 

essayer ceci:

=IIF(ISNOTHING(Fields!f2.Value)," ", IIF(ISNOTHING(Fields!f2.Value),0, Fields!f2.Value) * Fields!If3.Value) 

Dans ce scénario, lorsque f2 est nulle, voici ce qui se passe:

P1 = ISNOTHING(Fields!f2.Value) // this gets evaluated and "True" is the value 
P2 = IIF(P1,0, Fields!f2.Value) // this gets evaluated and 0 is the value 
P3 = P2 * Fields!If3.Value // this gets evaluated and 0 is the value 
Result = IIF(P1, " ", P3) // this gets evaluated and " " is the result 
+0

Est-ce que 'SWITCH' se comporte également de la même manière? Est-ce que toutes les clauses de 'SWITCH' sont également évaluées? – SouravA

+1

Cela fonctionne ainsi pour IIF() car il s'agit d'un appel de fonction. Tout comme n'importe quel autre appel de fonction, les paramètres sont évalués et transmis à la fonction. SWITCH() dans SSRS est aussi un appel de fonction, donc oui. Tous les paramètres seront évalués à chaque fois. –

Questions connexes