|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Последовательное выполнение запросов
Вот такая вот проблемка:
Нужно чтоб в поле P_CL_ID попадал только что созданный CL_ID Код:
procedure TNew_Person.Button1Click(Sender: TObject); var Cl_idg : integer; begin with DataModule1.IBQuery9 do begin SQL.Text:='insert into CLIENT (CL_ID, CL_IS_VIP, CL_CLS_ID, CL_CREDIT_NUM) values (gen_id(GEN_CLIENT_ID,1), :CL_IS_VIP, :CL_CLS_ID, :CL_CREDIT_NUM)'; ParamByName('CL_IS_VIP').AsInteger:=0; ParamByName('CL_CLS_ID').AsInteger:=0; ParamByName('CL_CREDIT_NUM').AsInteger:=0; Cl_idg:=DataModule1.CLIENT.FieldByName('CL_ID').AsInteger; // ВОТ ТУТ Я ЧТО-ТО НЕ ТАК ДЕЛАЮ, А ЧТО ПОНЯТЬ НЕ МОГУ... with DataModule1.IBQuery7 do begin SQL.Text:='insert into PERSON (P_ID, P_NAME, P_BIRTHDATE, P_CL_ID) values (:P_ID, :P_NAME, :P_BIRTHDATE, :P_CL_ID)'; ParamByName('P_NAME').AsString:=Edit1.Text; ParamByName('P_BIRTHDATE').AsString:=Edit2.Text; ParamByName('P_CL_ID').AsInteger:=Cl_idg; Transaction.StartTransaction; ExecSQL; Transaction.Commit; Transaction.Active:=false; end; end; |
#2
|
||||
|
||||
Сделайте StepByStep (Debug-Mode) и посмотрите в каком месте ошибка.
На вскидку: Для DataModule1.IBQuery9 не вызывается ExecSQL; |
#3
|
|||
|
|||
Тут не ошибка, а что-то не так работает, добавляется не тот CL_ID в поле P_CL_ID.
Сейчас попробую твоё предложение |
#4
|
||||
|
||||
Вот здесь:
не хватает DataModule1.IBQuery9.ExeSQL Код:
// <<== ExecSQL; Transaction.Commit; Transaction.Active:=false; |
#5
|
|||
|
|||
Цитата:
Спасибо, но не то, он так же вставляет запись на которой стоит указатель, то есть на первой записи... |
#6
|
||||
|
||||
Используйте триггеры, если база не лажовая.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |