Вниз
Скачать: CL | DM;

Как присвоить полю 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 вся ветка

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.012 c
4-10495
Плохой человек
2003-05-29 17:35
2003.08.04
Mouse Pointer Speed


6-10333
alt7
2003-05-29 15:15
2003.08.04
Глюкавый TIdTelnetServer


14-10448
AlexG
2003-07-18 08:56
2003.08.04
LocalSQL


14-10364
shark
2003-07-18 21:48
2003.08.04
Delphi глючит


6-10324
BoxTer
2003-05-27 13:04
2003.08.04
Перехват сообщений, посланных Net send или WinPopup..




   Наверх