Всем спасибо, но не то...
Вот у меня что получилось, но всё равно так как надо не работает...
Здесь почему-то всегда 0 получается:
Код:
Cl_idgen:=DataModule1.IBDataset1.FieldByName('id').AsInteger;
вот весь текст:
Код:
procedure TNew_Person.Button1Click(Sender: TObject);
var
Cl_idgen: integer;
begin
with DataModule1.IBDataSet1 do
begin
SelectSQL.Text:='select gen_id(GEN_CLIENT_ID,1) as id from RDB$DATABASE';
Transaction.StartTransaction;
Open;
Transaction.Commit;
Transaction.Active:=false;
end;
Cl_idgen:=DataModule1.IBDataset1.FieldByName('id').AsInteger; // ВОТ ЗДЕСЬ 0 ПОЛУЧАЕТСЯ ВСЕГДА
with DataModule1.IBQuery9 do
begin
SQL.Text:='insert into CLIENT (CL_ID, CL_IS_VIP, CL_CLS_ID, CL_CREDIT_NUM) values (:CL_ID, :CL_IS_VIP, :CL_CLS_ID, :CL_CREDIT_NUM)';
ParamByName('CL_ID').AsInteger:=Cl_idgen;
ParamByName('CL_IS_VIP').AsInteger:=0;
ParamByName('CL_CLS_ID').AsInteger:=0;
ParamByName('CL_CREDIT_NUM').AsInteger:=0;
Transaction.StartTransaction;
ExecSQL;
Transaction.Commit;
Transaction.Active:=false;
end;
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_idgen;
Transaction.StartTransaction;
ExecSQL;
Transaction.Commit;
Transaction.Active:=false;