Здесь и там на этом сайте есть подсказки об ответе на этот вопрос, но я задаю немного другой вопрос.
Где Crystal Reports документирует, что этот синтаксис не работает?
Trim({PatientProfile.First}) + " "
+ Trim(Iif(
IsNull({PatientProfile.Middle})
, Trim({PatientProfile.Middle}) + " "
, " "
)
)
+ Trim({PatientProfile.Last})
Я знаю, что решение
If IsNull({PatientProfile.Middle}) Then
Trim({PatientProfile.First})
+ " " + Trim({PatientProfile.Last})
Else
Trim({PatientProfile.First})
+ " " + Trim({PatientProfile.Middle})
+ " " + Trim({PatientProfile.Last})
но как нам понять, что мы не можем использовать первую версию?
В документации для IsNull написано
- Оценивает поле, указанное в текущей записи, и возвращает TRUE, если поле содержит нулевое значение
и Iif дает
- [Возвращает] truePart, если выражение равно True, и falsePart, если выражение равно False. Тип возвращаемого значения совпадает с типом truePart и falsePart.
Полагаю, если вы посмотрите на эту строку о "типе возвращаемого значения", вы можете его получить, но ...