Olá galera,

Pelo que pesquisei no Google a combinação de campo do tipo Serial + tdataset 
não é legal, e pelo que vi, a solução seria via POG (argh! :P*), vejam:

Tabela:
=====================================
CREATE TABLE teste
(
  oid serial NOT NULL,
  nome character varying(50),
  CONSTRAINT pk_oidteste PRIMARY KEY (oid)
);
=====================================

Código (com Zeos):
...
procedure TForm1.Button1Click(Sender: TObject);
begin
  ZConnection1.StartTransaction;
  try
    ZQuery1.SQL.Text := 'insert into Teste (Nome) values (''testando'') 
returning Oid';
    ZQuery1.Open; // Será?
    ShowMessage(IntToStr(ZQuery1.FieldByName('Oid').AsInteger));
    ZConnection1.Commit;
  except
    ZConnection1.Rollback;
  end;
end;
...

Hum... Com Open? Isso é POG e das feias, só existe essa maneira de fazer? Não 
tem como pegar o valor do sequencial antes de aplicar o commit?

No Firebird-2.1.3 o código acima nem funcionou.

--
Silvio Clécio
--
Contato - silvioprog<gmail/googlewave>
Blog estilo mural - silvioclecio.blogspot.com
Twitter - twitter.com/silvioprog
--
programmer ObjectPascal - silvioprog.blogspot.com
--
"Duas coisas instruem o homem, qualquer que seja a sua natureza: o instinto e a 
experiência. Blaise Pascal.

Responder a