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

Обсуждение Stimulsoft Reports.PHP
Ответить
nickolik
Сообщения: 4
Зарегистрирован: 18 фев 2014, 16:04

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

Сообщение 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)
Кто нибудь с таким сталкивался?
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

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

Сообщение HighAley »

Здравствуйте.

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

Спасибо.
nickolik
Сообщения: 4
Зарегистрирован: 18 фев 2014, 16:04

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

Сообщение nickolik »

Спасибо за ответ! Не знал я о таком.
Действительно, в том случае когда условие не выполнялось, значение переменной "procedures.date_published" было = "NULL" в связи с чем функция не выполнялась.
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

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

Сообщение HighAley »

Здравствуйте.

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

Спасибо.
Ответить