2017-09-06 3 views
0

S'il vous plaît jeter un oeil à l'expression ci-dessousSSRS simple imbriqué condition IIF?

="Active : " & IIF(Parameters!lsSSelect_Active_Type_s_.Value = "FXNULL","ALL", 
iif(Parameters!lsSSelect_Active_Type_s_.Value=1,"Active", 
iif(Parameters!lsSSelect_Active_Type_s_.Value=2,"Inactive","N/A"))) 

maintenant utilisateur a 3 options, 1, 2 ou FXNULL. 1 et 2 peuvent afficher Active et Inactive correctement mais lorsque l'utilisateur sélectionne "FXNULL", c'est une erreur de lancement.

The Value expression for the textrun contains an error: Input string was not in a correct format 

Maintenant, afin de faire un test pour vous assurer que la comparaison entre FXNULL fonctionne bien, j'ai essayé l'expression ci-dessous et fonctionne bien

="Active : " & IIF(Parameters!lsSSelect_Active_Type_s_.Value = "FXNULL","ALL","N/A") 

Quel est le problème avec la première expression?

+0

Le même paramètre est comparé comme une chaîne et un numéro? Quel est le type de votre paramètre? – niktrs

Répondre

2

Ajouter citations sur vos chèques numériques et fonctionnera sans erreurs

="Active : " & IIF(Parameters!lsSSelect_Active_Type_s_.Value = "FXNULL","ALL", 
iif(Parameters!lsSSelect_Active_Type_s_.Value="1","Active", 
iif(Parameters!lsSSelect_Active_Type_s_.Value="2","Inactive","N/A"))) 

La raison pour laquelle cela se produit est parce que Iif évalue toutes les expressions et vous avez des comparaisons numériques et de chaîne.

Aussi je suggère l'utilisation du commutateur au lieu de Iif imbriqué pour rendre votre code plus lisible

="Active : " & 
Switch(Parameters!lsSSelect_Active_Type_s_.Value = "FXNULL","ALL", 
Parameters!lsSSelect_Active_Type_s_.Value="1","Active", 
Parameters!lsSSelect_Active_Type_s_.Value="2","Inactive", 
True,"N/A" 
)