SSRS простое вложенное условие 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")))

Теперь у пользователя есть 3 варианта: 1, 2 или FXNULL. 1 и 2 могут правильно отображать Active и Inactive, но когда пользователь выбирает «FXNULL», возникает ошибка.

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

Теперь, чтобы провести тестирование, чтобы убедиться, что сравнение между FXNULL работает нормально, я попробовал приведенное ниже выражение и работал нормально.

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

Что не так с первым выражением?


person SuicideSheep    schedule 06.09.2017    source источник
comment
Один и тот же параметр сравнивается как строка и как число? Каков тип вашего параметра?   -  person niktrs    schedule 06.09.2017


Ответы (1)


Добавляйте кавычки к своим числовым чекам, и они будут работать без ошибок.

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

Причина, по которой это происходит, заключается в том, что Iif оценивает все выражения, и у вас есть как числовые, так и строковые сравнения.

Также я бы предложил использовать Switch вместо вложенного Iif, чтобы сделать ваш код более читабельным.

="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"
)
person niktrs    schedule 06.09.2017