Форум: "Базы";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];
ВнизКак присвоить полю Integer значение Найти похожие ветки
← →
N&N (2003-07-14 11:09) [0]Уважаемые Мастера,
окажите помощь, пожалуйста!
Есть поле типа Integer, перед Постом нужно проверить, если значение равно Null, то присвоить значение 0, подскажите, пожалуста, как это сделать.
← →
DenK_vrtz (2003-07-14 11:11) [1]Поставить значение 0 по умолчанию в таблице
← →
Q (2003-07-14 11:14) [2]в приложении - событие Table.BeforePost, Query.BeforePost
на сервере - через треггер
← →
Жук (2003-07-14 11:15) [3]Или триггером : if new.field is null then new.field=0
← →
Alexandr (2003-07-14 11:16) [4]или триггер...
← →
N&N (2003-07-14 11:16) [5]>DenK_vrtz
Поставить значение 0 по умолчанию в таблице
А нельзя ли это проделать программным способом?
← →
Alexandr (2003-07-14 11:17) [6]Dataset.OnNewRecord
← →
DenK_vrtz (2003-07-14 11:18) [7]N&N (14.07.03 11:16), см. выше
← →
Zacho (2003-07-14 11:20) [8]
> DenK_vrtz © (14.07.03 11:11)
Если запрос будет вида UPDATE MY_TABLE SET MY_FIELD=NULL или INSERT INTO MY_TABLE (MY_FIELD,..) VALUES (NULL,..) то это ничего не даст.
← →
N&N (2003-07-14 11:20) [9]Большое спасибо за помощь.
← →
N&N (2003-07-14 11:39) [10]Извиняюсь за назойливость, но рекомендованными способами мне не удалось решить свою проблему.Немного расширю вопрос.
Если в запросе
select sum(field1), sum(field2), sum(field1)+sum(field2) from...
значение в sum(field1) будет Null, то в sum(field1)+sum(field2) тоже будет Null, хотя в sum(field2) значение не равно Null . Не могу победить такую проблему.
← →
bushmen (2003-07-14 11:46) [11]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) [12]N&N (14.07.03 11:39),
надо сделать, чтобы в таблицу значения null не записывались (см.выше) или обрабатывать null в запросе (в IB6.x не знаю как, к сожалению)
← →
N&N (2003-07-14 12:06) [13]>Bushmen
select isnull(sum(field1), 0), isnull(sum(field2), 0), isnull(sum(field1), 0)+isnull(sum(field2), 0) from ...
а что мне попытаться сделать еще, если при этом выдается сообщение function unknown isnull
← →
Zacho (2003-07-14 12:52) [14]Вообще-то надо изначально правильно проектировать БД. Поля, по которым может быть суммирование должны быть NOT NULL DEFAULT 0. Лучше всего так и сделать.
Если сейчас изменить структуры БД нет возможности, то можно использовать какую-либо UDF (смотри на www.ibase.ru). В Yaffil можно было бы использовать фунцию IIF, в FB1.5 - COALESCE или CASE, а в IB - только UDF.
← →
bushmen (2003-07-14 12:58) [15]N&N>
попробуй изменить структуру таблиц как сказал Zacho. Только перед этим сделай update тфблицы и замени все null на 0
← →
DenK_vrtz (2003-07-14 13:09) [16]Zacho © (14.07.03 12:52), а не знаешь кто за такую же идею чуть выше критиковал? (единственное not null забыл указать) :-)
← →
Zacho (2003-07-14 13:14) [17]
> DenK_vrtz © (14.07.03 13:09)
>(единственное not null забыл указать) :-)
А не надо забывать :-) NOT NULL здесь самое существенное.
← →
N&N (2003-07-14 13:22) [18]>Zacho
Вообще-то надо изначально правильно проектировать БД. Поля, по которым может быть суммирование должны быть NOT NULL DEFAULT 0.
Вообще-то у меня так и сделано, но в резултате запроса при определенных параметрах условия "Where" в одном из слагаемых получается Null, вот и начинаются неувязки.
← →
bushmen (2003-07-14 13:31) [19]N&N>
В таком случае, у тебя NULL выдает только в случае, если у тебя нет ни одной выборки (нет ни одного слагаемого) по условию. Поэтому, в клиенте программно проверяй на отсутствие НД в рекордсете
← →
N&N (2003-07-14 13:36) [20]>Bushman
Понятно, большое спасибо, направления для копания получил.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.013 c