Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как присвоить полю Integer значение


N&N ©   (2003-07-14 11:09:00) 

Уважаемые Мастера,
окажите помощь, пожалуйста!
Есть поле типа Integer, перед Постом нужно проверить, если значение равно Null, то присвоить значение 0, подскажите, пожалуста, как это сделать.


N&N   (2003-07-14 13:36:00) [1]

>Bushman
Понятно, большое спасибо, направления для копания получил.


bushmen   (2003-07-14 13:31:00) [2]

N&N>
В таком случае, у тебя NULL выдает только в случае, если у тебя нет ни одной выборки (нет ни одного слагаемого) по условию. Поэтому, в клиенте программно проверяй на отсутствие НД в рекордсете


N&N   (2003-07-14 13:22:00) [3]

>Zacho
Вообще-то надо изначально правильно проектировать БД. Поля, по которым может быть суммирование должны быть NOT NULL DEFAULT 0.

Вообще-то у меня так и сделано, но в резултате запроса при определенных параметрах условия "Where" в одном из слагаемых получается Null, вот и начинаются неувязки.


Zacho   (2003-07-14 13:14:00) [4]


> DenK_vrtz © (14.07.03 13:09)
>(единственное not null забыл указать) :-)

А не надо забывать :-) NOT NULL здесь самое существенное.


DenK_vrtz   (2003-07-14 13:09:00) [5]

Zacho © (14.07.03 12:52), а не знаешь кто за такую же идею чуть выше критиковал? (единственное not null забыл указать) :-)


bushmen   (2003-07-14 12:58:00) [6]

N&N>
попробуй изменить структуру таблиц как сказал Zacho. Только перед этим сделай update тфблицы и замени все null на 0


Zacho   (2003-07-14 12:52:00) [7]

Вообще-то надо изначально правильно проектировать БД. Поля, по которым может быть суммирование должны быть NOT NULL DEFAULT 0. Лучше всего так и сделать.
Если сейчас изменить структуры БД нет возможности, то можно использовать какую-либо UDF (смотри на www.ibase.ru). В Yaffil можно было бы использовать фунцию IIF, в FB1.5 - COALESCE или CASE, а в IB - только UDF.


N&N   (2003-07-14 12:06:00) [8]

>Bushmen
select isnull(sum(field1), 0), isnull(sum(field2), 0), isnull(sum(field1), 0)+isnull(sum(field2), 0) from ...

а что мне попытаться сделать еще, если при этом выдается сообщение function unknown isnull


bushmen   (2003-07-14 11:46:00) [9]

select isnull(sum(field1), 0), isnull(sum(field2), 0), isnull(sum(field1), 0)+isnull(sum(field2), 0) from ...


DenK_vrtz   (2003-07-14 11:46:00) [10]

N&N (14.07.03 11:39),
надо сделать, чтобы в таблицу значения null не записывались (см.выше) или обрабатывать null в запросе (в IB6.x не знаю как, к сожалению)


N&N   (2003-07-14 11:39:00) [11]

Извиняюсь за назойливость, но рекомендованными способами мне не удалось решить свою проблему.Немного расширю вопрос.
Если в запросе
select sum(field1), sum(field2), sum(field1)+sum(field2) from...
значение в sum(field1) будет Null, то в sum(field1)+sum(field2) тоже будет Null, хотя в sum(field2) значение не равно Null . Не могу победить такую проблему.


N&N   (2003-07-14 11:20:00) [12]

Большое спасибо за помощь.


Zacho   (2003-07-14 11:20:00) [13]


> DenK_vrtz © (14.07.03 11:11)

Если запрос будет вида UPDATE MY_TABLE SET MY_FIELD=NULL или INSERT INTO MY_TABLE (MY_FIELD,..) VALUES (NULL,..) то это ничего не даст.


DenK_vrtz   (2003-07-14 11:18:00) [14]

N&N (14.07.03 11:16), см. выше


Alexandr   (2003-07-14 11:17:00) [15]

Dataset.OnNewRecord


N&N   (2003-07-14 11:16:00) [16]

>DenK_vrtz
Поставить значение 0 по умолчанию в таблице
А нельзя ли это проделать программным способом?


Alexandr   (2003-07-14 11:16:00) [17]

или триггер...


Жук   (2003-07-14 11:15:00) [18]

Или триггером : if new.field is null then new.field=0


Q   (2003-07-14 11:14:00) [19]

в приложении - событие Table.BeforePost, Query.BeforePost

на сервере - через треггер


DenK_vrtz   (2003-07-14 11:11:00) [20]

Поставить значение 0 по умолчанию в таблице


Наверх

Титульная страница Поиск, карта сайта Написать письмо