![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
(Не)Подстановка Default значений в IBase. [D6, IB 7.0]
Vemer © (2003-09-21 11:25:00)
Создаём в IBase такую талицу:
CREATE TABLE Tovar(PIN Integer Not Null Primary key, T_Name Char(40), T_Kolvo SmallInteger Default 0);
Однако при вставке новой записи заветный нолик в T_Kolvo не появляется. Что я делаю не так?
Zacho (2003-09-21 13:01:00) [1]
Ну а как думаешь, на чем написана IBConsole ?
Вообще, посоветовал бы пользоваться чем-нибудь более другим, например - IBExpert ( http://www.ibexpert.com)
Vemer (2003-09-21 12:39:00) [2]
Delphi ни причем (пока).
Вставку я делал прямо из IbConsole ( Table - Properties - Data).
Обработчик OnNewRecord в Delphi написан (и даже работает), но нафига его делать, если в Ibase должен работать Default. Или он только при INSERT INTO и т.п. срабатывает?
Щас буду ковырять DefaultExpression :).
Zacho (2003-09-21 11:55:00) [3]
Все делаешь правильно. А дело в компонентах доступа. Значение по умолчанию присвоилось бы этому полю при выполнении запроса INSERT INTO TOVAR (PIN,T_NAME) VALUES (:PIN,:T_NAME) , а TIBDataSet (или что там у тебя) выполняет запрос INSERT INTO TOVAR (PIN,T_NAME, T_KOLVO) VALUES (:PIN,:T_NAME,:T_KOLVO), в к-ром значение параметра :T_KOLVO равно NULL, соответственно и в поле TKOLVO записывается NULL.
Как с этим бороться ? Написать триггер, или присваивать значение полю в событии OnNewRecord, или установить св-во поля датасета DefaultExpression.