Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Работа с Interbase 6.5


Автор: Evan 6.6.2010, 17:52
В общем проблема такая. Работаю с БД Interbase 6.5. Из проги надо вводит инфу в БД, в любую из таблиц. Всё бы хорошо, но возникла такая проблема: при добавлении новой записи надо вставлять ID - ключевое поле, надо его инкрементировать...тока блин, как это сделать? Получить из таблицы последний максимальный ID? как?...вот кусок кода:
Код

IBQuery2.Close;
IBQuery2.SQL.Clear;
IBQuery2.SQL.Add('select max(ID_LAMP) as maxID from LAMP;');
IBQuery2.SQL.Add('insert into LAMP values(maxID+1,:NAME,:TIP,:MOSHNOST,:PROIZVODITEL,:STOIMOST)');
IBQuery2.ParamByName('NAME').AsString:=LabeledEdit8.Text;
IBQuery2.ParamByName('TIP').AsString:=LabeledEdit12.Text;
IBQuery2.ParamByName('MOSHNOST').AsInteger:=STRTOINT(LabeledEdit9.Text);
IBQuery2.ParamByName('PROIZVODITEL').AsString:=LabeledEdit11.Text;
IBQuery2.ParamByName('STOIMOST').AsInteger:=STRTOINT(LabeledEdit10.Text);

но так ругается...

Автор: Данкинг 6.6.2010, 18:36
Цитата(Evan @  6.6.2010,  18:52 Найти цитируемый пост)
вставлять ID - ключевое поле, надо его инкрементировать...тока блин, как это сделать? 

Создать в БД генератор, назвать его, например, NOMER. Далее запрос на добавление будет иметь вид вроде:
Код

insert into base values (gen_id(nomer,1));

Где gen_id - это значение генератора, NOMER - его название, а 1 - на сколько его следует увеличить.

Добавлено через 2 минуты и 10 секунд
Создание генератора на FB:
Код

CREATE SEQUENCE NOMER;
ALTER SEQUENCE NOMER RESTART WITH 1;

Думаю, на IB суть примерно та же.

Автор: Evan 6.6.2010, 18:45
Спасибо. Решил проблему. Вобщем то таким способом - генератор + триггер.

Автор: Akella 8.6.2010, 09:45
Цитата(Evan @  6.6.2010,  17:52 Найти цитируемый пост)
при добавлении новой записи надо вставлять ID - ключевое поле, надо его инкрементировать...тока блин, как это сделать? 


Цитата(Evan @  6.6.2010,  18:45 Найти цитируемый пост)
Вобщем то таким способом - генератор + триггер. 


Правильно smile

Добавлено через 27 секунд
Обычно вопрос помечают, как решённый (справа вверху)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)