Страница 1 из 1

IIF при использовании функции "DateDiff" не работает

Добавлено: 18 фев 2014, 16:23
nickolik
В одной из ячеек необходимо в зависимости от значения параметра "lots.status"(значения int от 1 до 8) вывести либо разницу в днях между двумя датами, либо текст "Нет". Я использовал следующую конструкцию:

Код: Выделить всё

{IIF(lots.status == 7 || lots.status == 8, (Ceiling(DateDiff(lots.timestamp, procedures.date_published)/1000/60/60/24)), "Нет")}
В итоге когда условие выполняется я получаю разницу между датами в днях, но если условие не выполняется ячейка остается пустой! Хотя должен быть текст "Нет"
Условие верное вариант:

Код: Выделить всё

{IIF(lots.status == 7 || lots.status == 8, "Да", "Нет")}
Отрабатывает отлично!
Поэтому думаю что как то не корректно отрабатывает в варианте else конструкция:

Код: Выделить всё

Ceiling(DateDiff(lots.timestamp, procedures.date_published)/1000/60/60/24)
Кто нибудь с таким сталкивался?

Re: IIF при использовании функции "DateDiff" не работает

Добавлено: 19 фев 2014, 18:14
HighAley
Здравствуйте.

Перед выполнением IIF(), как и любой другой функции, вычисляются значения ВСЕХ аргументов. Если возникает проблема с каким-то аргументом, то дальнейшее выполнение данной функции невозможно.

Спасибо.

Re: IIF при использовании функции "DateDiff" не работает

Добавлено: 20 фев 2014, 11:31
nickolik
Спасибо за ответ! Не знал я о таком.
Действительно, в том случае когда условие не выполнялось, значение переменной "procedures.date_published" было = "NULL" в связи с чем функция не выполнялась.

Re: IIF при использовании функции "DateDiff" не работает

Добавлено: 20 фев 2014, 14:53
HighAley
Здравствуйте.

К сожалению, в данном продукте мы не можем предложить обходного пути. Надо избегать подобных ситуаций.

Спасибо.