2016-12-13 4 views
0

Я ожидаю, что в календаре появятся только имена, если они существуют, и ничего, если они этого не сделают.SSRS - Ошибка возврата выражения, если null

Я создал выражение, в котором он возвращает только последнее имя человека, используя запятую в качестве разделителя.

Мое текущее выражение:

=iif(IsNothing(Fields!EmployeeName.Value), nothing, Left(Fields!EmployeeName.Value,-1 + InStr(Fields!EmployeeName.Value, ","))) 

Текущие результаты, где появляется, если # Ошибка имя не существует:

enter image description here

ответ

2

Ошибка происходя потому, что вы передаете в числе меньше 0 в левую функцию. Когда в вашей строке нет запятой, вы проходите в -1.

Чтобы обработать это, я добавил в выражение два выражения if. Первый возвращает всю строку, если индекс первой запятой равен 0. Вторая проверяет условие -1 и передает 0 в левую функцию, когда это происходит.

= 
iif(
    IsNothing(Fields!EmployeeName.Value), 
    nothing, 
    iif(
     InStr(Fields!EmployeeName.Value, ",") = 0, 
     Fields!EmployeeName.Value, 
     Left(Fields!EmployeeName.Value,iif(-1 + InStr(Fields!EmployeeName.Value, ",") < 0, 0, -1 + InStr(Fields!EmployeeName.Value, ","))) 
     ) 
    ) 
Смежные вопросы