Проблема использования IIF в случаях с IsNothing, а также при аналогичном делении на ноль состоит в том, что это не языковая конструкция, а фактически функция.Поэтому параметры оцениваются перед вызовом функции, а это означает, что выражение, которое, по вашему мнению, не должно оцениваться, действительно оценивается перед вызовом функции.
Я знаю, что кажется сумасшедшим, что и истинная и ложная части выражения IF вычисляются, но воспринимают это как вызов функции, а не как функцию языка.Нет короткого замыкания пути, как в языке, ошибка в вычислении ВСЕХ параметров перед вызовом функции.
Вы можете заменить это пользовательской функцией кода, чтобы сделать тот же эффект, что и вы.после.Итак, что-то вроде следующего:
Щелкните правой кнопкой мыши тело отчета и выберите Свойства.Перейдите на вкладку «Код» и введите следующий код:
Public Function GetParamVal(ByVal ParamVal) As String
If IsNothing(ParamVal) Then
Return ""
Else
Return ParamVal
End If
End Function
Затем назовите его в своем заголовке так:
=Code.GetParamVal(Parameters!MyParam.Value)
(я не нахожусь перед системой, чтобы проверить этоно вы должны понять)