2017-09-06 6 views
0

haben Sie einen Blick auf die unten AusdruckSSRS einfache verschachtelte IIF-Bedingung?

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

Jetzt 3 Optionen Benutzer, 1, 2 oder FXNULL. 1 und 2 können Active und Inactive korrekt anzeigen, aber wenn Benutzer "FXNULL" auswählen, wird ein Fehler ausgegeben.

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

Um nun eine Prüfung, um sicherzustellen, dass der Vergleich zwischen FXNULL adaequat zu tun, habe ich versucht, den unten Ausdruck und adaequat

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

Was mit dem ersten Ausdruck falsch ist?

+0

Der gleiche Parameter wird als String und als Zahl im Vergleich zu machen? Was ist der Typ Ihres Parameters? – niktrs

Antwort

2

hinzufügen Zitate auf dem Ziffernüberprüft und es wird ohne Fehler

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

Der Grund, warum dies passiert ist, ausgeführt werden, da Iif alle Ausdrücke auswertet und Sie haben beide numerischen und String-Vergleiche.

Auch würde ich die Verwendung von Switch vorschlagen anstelle von verschachtelten Iif Ihren Code lesbarer

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