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

Проверка на NULL

Добавлено: 03 апр 2014, 10:55
Golland
Добрый день! Подскажите пож. как в генераторе отчетов можно задать условие на проверку поля с типом BLOB(в базе данных MySQL) на NULL?

Re: Проверка на NULL

Добавлено: 03 апр 2014, 13:37
Aleksey
Здравствуйте,

Пожалуйста, попробуйте использовать следующее выражение:
DataSource["ColumnName"] == DBNull.Value

Спасибо.

Re: Проверка на NULL

Добавлено: 03 апр 2014, 14:58
Golland
При использовании DBNull.Value при построении отчета возникает ошибка
Report Rendering Message. PicD Parser error: The name 'DBNull' does not exist in the current context

Я попробовал использовать просто Null вместо DBNull.Value {Switch(DetailData.PicD != Null, DetailData.PicD)} и выражение сработало. Но насколько правомерно такое использование? Спасибо.

Re: Проверка на NULL

Добавлено: 04 апр 2014, 16:03
HighAley
Здравствуйте.

Если работает, то можно использовать ;)

Спасибо.

Re: Проверка на NULL

Добавлено: 16 фев 2017, 12:35
Golland
Здравствуйте, сейчас использую версию 2016.3.6 и на ней условие на null не работает(на версии 2015 года работало вроде как). Следующее выражение {IIF(Master_Data.CU_Phone_Code == null,"YES","No")} всегда возвращает No. Попытки записать условие с DBNull.Value также не привели к успеху. Поле CU_Phone_Code самое обычное текстовое поле. Подскажите пож. варианты решения или это баг, который нужно соответствующе оформить? Спасибо.

Re: Проверка на NULL

Добавлено: 17 фев 2017, 10:02
Vadim
Здравствуйте.
Используйте такое выражения для проверки на null

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

{IIF(Master_Data["CU_Phone_Code"] == null,"YES","No")} 

Re: Проверка на NULL

Добавлено: 17 фев 2017, 16:50
Golland
Здравствуйте. Перепробовал все варианты. С условием на null не работает ни один.Сделал вывод поля, в котором в качестве значения является null, следующим образом {"#"+Master_Data.CU_Phone_Code+"#"}. При построении отчета получил ##.

Изменил условие с NULL на
{IIF(Master_Data["CU_Phone_Code"] == "","YES","No")} и {IIF(Length(Master_Data["CU_Phone_Code"]) == 0,"YES","No")}

В результате получил желаемое в обоих случаях "YES". Но пустое значение и значение null все таки разные понятия.

Нашел в Report setup опцию Convert Nulls(флажок отмечен или снят). Но его использования в обоих положениях на условия с nullне дали никакого результата.

Хотелось бы узнать мнение разработчиков, какова все таки логика(политика) использования NULL в генераторе отчетов.
Спасибо.

Re: Проверка на NULL

Добавлено: 20 фев 2017, 15:33
Vadim
Здравствуйте.
Пример отчета для проверки на null;
s1.PNG
s1.PNG (20.61 КБ) 11633 просмотра
s2.PNG
s2.PNG (23.46 КБ) 11633 просмотра

Re: Проверка на NULL

Добавлено: 20 фев 2017, 23:02
Golland
Здравствуйте! В общем результат с использованием null неизменный и для Вашего примера. Колонки с null обрабатываются по прежнему как пустые строки.

Но удалось найти причину, по которой такое происходит.

Дело в использовании движка для построения отчетов, который устанавливается в файле stimulsoft.properties
при Engine.Type=Flex все выше перечисленные условия не работают с null, точнее работают как с пустой строкой.
А вот при использовании Engine.Type=Java все работает корректно, как показано в примере.

P.S. Писать на это отдельный баг или достаточно упоминания на форуме?

Спасибо.

Re: Проверка на NULL

Добавлено: 23 фев 2017, 15:55
Aleksey
Здравствуйте,

Спасибо за детальное описание проблемы.
Необходимо дополнительное время для анализа.

Спасибо.