| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Поставить условие на "null" |
| Автор: mspuz 7.10.2005, 11:26 |
| Проблема в Interbase я писал: if IBQuery1.FieldValues['recno']<>null then MyPer:=IBQuery1.FieldValues['recno'] else MyPer:=''; а в BDE такое не прокатывает - пишет, что необъявленная переменная "null". Пробывал использовать "nil", тоже не получилось. Так как надо??? |
| Автор: Darhazer 7.10.2005, 11:32 |
| А попробувал is not null ? P.S. это в самом запросе, я поздно увидел что ты сравниваеш уже результати запроса Попробуй пустую строку ("") пользуват? |
| Автор: mspuz 7.10.2005, 11:37 |
| Пробовал я с пустой строкой - не получается |
| Автор: Петрович 7.10.2005, 11:53 | ||||
| Что-то не то ты пишешь. 1. Null это функция возвращающая "пустое" значение типа Variant. А по сему, никакого отношения к способу доступа к БД (BDE, Interbase, и пр.) это не имеет. Кстати, это функция определена в модуле Variants, и если тебе компилятор пишет "необъявленная переменная "null"." , то вероятно ты забыл указать этот модуль в uses. 2. А для проверки на Null значения поля, у каждого поля есть метод IsNull. Вот его и логичнее использовать в твоем случае. Например так:
3. Именно твой фрагмент я бы записал так:
Семантически это будет эквивалентно, зато гораздо естественнее смотрится. |
| Автор: kobra 7.10.2005, 12:38 |
| 1. ето луще делать в запросе ISNULL(field, '') AS field (правда не помню, в интербеис такое есть?). 2. гдето, когдато читал что в физическои базе NULL занимает болше места, чем пустое значение, по етому было рекомендовано ползоватся пустым значением, числом 0, заведомо установленнои нереалнои датои. |
| Автор: mspuz 7.10.2005, 12:57 |
| Петрович Огромное спасибо!!! Очень точный и полностью исчерпывающий ответ!!! P.S. Узнал много нового |
| Автор: Петрович 7.10.2005, 13:04 | ||||
Иногда бывает необходимость проверки на NULL в программе а не в запросе.
Даже если и так. Все равно, те проблемы которые ты получаешь при отказе от использования NULL, не идут ни в какое сравнение с незначительным увеличением размера БД. |
| Автор: bas 7.10.2005, 14:14 |
| В Oracle , например - Null не есть 0 или ''. |
| Автор: Петрович 7.10.2005, 22:25 | ||
Хм. А что, где-то Null соответствует 0 или '' ? Лично я такого не встречал. Null он и в африке Null. |