Galera consegui fazer sem POG mudando o SQL, vejam como fiz, com outras tabelas:
========== insert into Pedido (Oid, Data) values (nextval('pedido_oid_seq'), current_date); insert into PedidoItem (OidPedido, Preco, Quantidade) values (currval('pedido_oid_seq'), 10, 1); ========== Pequei a dica nesse artigo: http://imasters.uol.com.br/artigo/1804 Mas se alguém conseguir pegar o valor atual de um sequenciador sem incrementá-lo eu agradeço. --- Em delphi-br@yahoogrupos.com.br, "silvioprog" <silviop...@...> escreveu > > 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.