На этом сайте есть подсказки ответа на этот вопрос, но я задаю несколько другой вопрос.Формула Crystal Reports: IsNull + Iif
Где 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.
Я полагаю, что если вы смотрите на эту строку о «типе возвращаемого значения» вы можете получить его, но ...
Я не CRXI удобно сегодня, но что не работает о первом? Неправильно ли это происходит с интервалом (что является логической ошибкой в коде - у вас есть дополнительный Trim()) или он не работает каким-то другим способом? – Stobor
Для записей, где .Middle является NULL, CR не может оценить строковое значение в Trim (.Middle) и решает, что значение Iif равно NULL, хотя у меня есть этот явный тест. – SarekOfVulcan