![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Триггер счетчика [D5, IB6.x]
Донской © (2004-09-02 17:16:00)День добрый. чисто ламерский вопрос.
В Interbase expert создал первичный ключ в виде счетчика. И сама интербейз експерт предложила создать для него триггер и генератор. Я их создал, базу закрыл.
Когда коннектюсь к ней из дельфи с помощью TIBTable и пытаюсь добавить запись, то после команды post выдается ошибка, что ключевое поле не заполнено.
Разве триггер на стороне сервера не должен это делать сам?
Zacho (2004-09-03 12:45:00) [21]Донской (03.09.04 12:24) [8]
Сделать ей shutdown ? В IBX можно с помощью TIBConfigService
Донской (2004-09-03 12:42:00) [22]а, кажется нашел.
надо заполнить поле params у компонента tibdatabase
Донской (2004-09-03 12:42:00) [23]а, кажется нашел.
надо заполнить поле parameters у компонента tibdatabase
Sergey13 (2004-09-03 12:41:00) [24]2[10] Донской (03.09.04 12:38)
>Остается создание новой таблицы
Не думаю, что это поможет.
Донской (2004-09-03 12:38:00) [25]Дело в том, что программа длительное время осциллографирует данные. Данные должны храниться в отдельной таблице, чтобы можно было использовать tdbchart для их отрисовки. Иначе будут глобальные тормоза не только при отрисовке, но и при добавлении данных (63 поля = 63 канала данных), тормоза проверены, этот вариант отпал.
Остается создание новой таблицы с осциллографируемыми данными для каждого сеанса измерений в режиме выполнения программы.
И связь этой таблицы с некоторыми другими таблицами из базы.
Sergey13 (2004-09-03 12:32:00) [26]2[8] Донской (03.09.04 12:24)
А почему бы не продолжить успешное использование ИБЭксперта в деле администрирования/проектирования БД? Зачем в программу то это тащить?
Донской (2004-09-03 12:24:00) [27]Понятно, доки читаем обязательно.
А вот такой вопрос.
я создал sql запрос с созданием таблицы и внешнего ключа. В документации написано, что если при этом будет возникать ошибка Is in use, то базу надо открывать в монопольном режиме, а уже потом создавать связи между таблицами.
Так вот как программно открыть базу в монопольном режиме?
VID (2004-09-03 00:21:00) [28]1. создать генератор для твоего поля ID.
2. создать триггер Before Insert для твоей таблицы где это поле.
3. в коде триггера сделать NEW."ID" = GEN_ID(<generator_name>, 1);
Zacho (2004-09-02 20:00:00) [29]2 Донской :
Немедленно и вдумчиво читать http://www.ibase.ru/devinfo/generator.htmи все отальные статьи на http://www.ibase.ru/develop.htm
Донской (2004-09-02 17:38:00) [30]Точно. Именно false!
Спасибо, Sergey13
Донской (2004-09-02 17:36:00) [31]Для поля Required:=False.... ща, пять сек, проверю...
Донской (2004-09-02 17:34:00) [32]Да нет у меня запроса...
у меня такой код:
with IBTable1 do
begin
for k:=1 to 1000 do
begin
append;
findfield('id_parent').asinteger:=1;
findfield('datecreation').value:=now;
findfield('selected').asinteger:=1;
findfield('numpi').asstring:=' ';
findfield('temperature').value:=0;
findfield('velosity').value:=0;
findfield('pressure').value:=0;
post;
end;
end;
так вот ключевым является поле ID, которое в этом коде не правится. Я думал, что это должен делать сервер inttrbase.
Sergey13 (2004-09-02 17:33:00) [33]2Донской (02.09.04 17:16)
1.Убедись что тригер есть и работает
2.Поставь для поля Required:=False
-SeM- (2004-09-02 17:24:00) [34]Попробуй убрать это ключевое поле с текста запроса. Делфи знает, что это поле обязательное, потому и ругается. ИМХО.