C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
автоинкремент IBExpert
** Dizapp
Отправлено: 09.05.2006, 20:03


Не зарегистрирован







мне нужно автоинкремент, но чтобы id увеличивался каждый раз в два раза по сравнению с предыдущем
Valdemar
Отправлено: 10.05.2006, 07:46


Мастер участка

Группа: Участник
Сообщений: 433



Сделайте триггер на вставку новой записи и в нем генерируйте нужное значение.
** Dizapp
Отправлено: 10.05.2006, 16:07


Не зарегистрирован







Делаю так
CODE

AS
 declare variable X integer;
BEGIN
 IF (NEW.IDGROUP IS NULL) THEN
 begin
 if(x=0) then x=1;
   NEW.IDGROUP = GEN_ID(GEN_GROUPS_ID,X*2);
   X = new.idgroup;
   end
END

А при вставке выдает ошибку
validation error for column IDGROUP, value "***null**".
А чего я не так пишу?
olegenty
Отправлено: 11.05.2006, 11:53


Ветеран

Группа: Модератор
Сообщений: 2412



if (x=0) then x=1 — никогда не срабатывает. х = NULL. видимо, и gen_id в этом случае даёт NULL. (NULL * 2 = NULL).
** Dizapp
Отправлено: 11.05.2006, 15:57


Не зарегистрирован







вот теперь нормально все срабатывает
CODE

AS
 declare variable X integer;
BEGIN
 IF (NEW.IDGROUP IS NULL) THEN
 begin
   X = GEN_ID(GEN_GROUPS_ID,0);
   if (X=0) then X=1;
   NEW.IDGROUP = GEN_ID(GEN_GROUPS_ID,X);
 end
END
И при вставке значений в ibexpert'e все замечательно работает. А когда вставлаю из билдера
CODE
for(Form21->IBDataSet1->First();!Form21->IBDataSet1->Eof;Form21->IBDataSet1->Next())
     {
              str=Form21->IBDataSet1->FieldByName(Form21->NameGroup)->Value;
              Form3->CheckListBox1->Items->Add(str);
              Form1->IBDataSet1->Insert();
              Form1->IBDataSet1->FieldByName("NAMEGROUP")->Value=str;
              Form1->IBDataSet1->FieldByName("COUNTPARAM")->Value=0;
              Form1->IBDataSet1->Post();
     }

То заполняется просто с увеличанием на 1. Ничего не понимаю
** Dizapp
Отправлено: 12.05.2006, 13:29


Не зарегистрирован







Все. разобралась. Всем спасибо.

Вернуться в Работа с базами данных в C++Builder