Проверка на NULL

Обсуждение Stimulsoft Reports.Java
Golland
Сообщения: 73
Зарегистрирован: 03 окт 2012, 13:03

Проверка на NULL

Сообщение Golland » 03 апр 2014, 06:55

Добрый день! Подскажите пож. как в генераторе отчетов можно задать условие на проверку поля с типом BLOB(в базе данных MySQL) на NULL?
Aleksey
Сообщения: 1976
Зарегистрирован: 22 апр 2010, 02:57

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

Сообщение Aleksey » 03 апр 2014, 09:37

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

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

Спасибо.
Golland
Сообщения: 73
Зарегистрирован: 03 окт 2012, 13:03

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

Сообщение Golland » 03 апр 2014, 10:58

При использовании 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)} и выражение сработало. Но насколько правомерно такое использование? Спасибо.
HighAley
Сообщения: 1955
Зарегистрирован: 08 июн 2011, 07:36

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

Сообщение HighAley » 04 апр 2014, 12:03

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

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

Спасибо.
Golland
Сообщения: 73
Зарегистрирован: 03 окт 2012, 13:03

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

Сообщение Golland » 16 фев 2017, 09:35

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

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

Сообщение Vadim » 17 фев 2017, 07:02

Здравствуйте.
Используйте такое выражения для проверки на null

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

{IIF(Master_Data["CU_Phone_Code"] == null,"YES","No")} 
Golland
Сообщения: 73
Зарегистрирован: 03 окт 2012, 13:03

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

Сообщение Golland » 17 фев 2017, 13:50

Здравствуйте. Перепробовал все варианты. С условием на 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 в генераторе отчетов.
Спасибо.
Vadim
Сообщения: 97
Зарегистрирован: 04 апр 2013, 08:26

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

Сообщение Vadim » 20 фев 2017, 12:33

Здравствуйте.
Пример отчета для проверки на null;
s1.PNG
s1.PNG (20.61 КБ) 3269 просмотров
s2.PNG
s2.PNG (23.46 КБ) 3269 просмотров
Вложения
null.mrt
(5.07 КБ) 218 скачиваний
Golland
Сообщения: 73
Зарегистрирован: 03 окт 2012, 13:03

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

Сообщение Golland » 20 фев 2017, 20:02

Здравствуйте! В общем результат с использованием null неизменный и для Вашего примера. Колонки с null обрабатываются по прежнему как пустые строки.

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

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

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

Спасибо.
Aleksey
Сообщения: 1976
Зарегистрирован: 22 апр 2010, 02:57

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

Сообщение Aleksey » 23 фев 2017, 12:55

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

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

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