Заметил, что при вычислении логического выражения, DX отрабатывает не совсем так, как принято в большинстве языков
программирования. А именно: логическое выражение должно вычисляться до тех пор, пока не станет известен его результат.
У меня при вычислениях проверяется попадание даты в диапазон, но есть записи, в которых дата не установлена и соответственно
имеет значение NULL.
Пишу выражение
Код: Выделить всё
iif([Выдано]<>null & [Выдано]>=[:Дата начала] & [Выдано]<=[:Дата конца],[Окончательный расчет],0)
где при пустом значении поля [Выдано] уже не имеет смысла продолжать дальнейшие вычисления, т.к. ясно, что оно ложно.
Обычно таким образом и происходит "защита" от ошибки при сравнениях дат с пустым значением.
Однако, DX продолжает и выдает ошибку в сравнении.
Приходится использовать вложенный IIF
Код: Выделить всё
iif ([Выдано]<>null,
iif([Выдано]>=[:Дата начала] & [Выдано]<=[:Дата конца],
[Окончательный расчет],0), 0)
Несколько громоздко и легко запутаться в открывающихся и закрывающихся скобках.
