Bom dia! Estou desenvolvimento uma aplicação utilizando Delphi 2007 e o banco de dados é Firebird. Tenho uma tabela aonde a chave primária é o ID (chave simples) e criei um generator para não ter o perigo de adicionar o mesmo código para os demais registros. Criei também um trigger que verifica, se o campo ID for nulo, ele gera o código e atribui ao campo, conforme exemplo abaixo:
CREATE GENERATOR GEN_LAB_TABELA_ID; *// cria o generator* SET TERM ^ ; CREATE OR ALTER TRIGGER LAB_TABELA_BI FOR LAB_TABELA *//cria o trigger que se o campo código (ID) for nulo, a trigger atribui um código de acordo com o generator* ACTIVE BEFORE INSERT POSITION 1 as begin if (new.codigo is null) then new.codigo = gen_id(gen_lab_tabela_id,1); end ^ SET TERM ; ^ Adicionei os campos da minha tabela no sqlquery e clientdataset e atribui a chave ao campo código e fiz as configurações necessárias no provider. Testei a aplicação e funciona normalmente, porém, na minha tela de cadastro, eu tenho um grid aonde adiciono os ítens relacionados a tabela principal. No meu caso a tabela A é a tabela principal e a tabela B a secundária. O relacionamento que criei entre as tabelas é 1:N. O meu problema, é que após salvar os dados na tabela A, o banco cria e atribui corretamente o ID, porém, não retorna valor no meu clientdataset da tabela A, para que eu possa pegar o código gerado e relacionar com a tabela B. Como eu faço isso? Preciso de uma solução urgente! Já fiz algumas pesquisas na net, mas o que eu encontro é gambiarra, ou o pessoal chamar o generator direto na aplicação e isso não queria, pois estou preparando a aplicação para possíveis conexão com banco de dados diferentes, como Firebird e Oracle, mas isso é outra questão. Obrigado, Fabiano [As partes desta mensagem que não continham texto foram removidas]