recuperar codigo autoincremento
13/08/2008
0
Bom dia amigos, tenho o seguinte problema:
Eu tenho um relacionamento mestre-detalhe, o mestre e inserido sem o codigo da chave primaria, uma triger no banco se encarrega de atribuir o codigo da chave primaria.
Agora como eu faco para atualizar so esse registro em meu clientDataSet mestre, pra poder pegar o codigo da chave primaria e assim inserir os detalhes.
Ja tentei configurando poAutoRefresh do provider, e nada. Tambem tentei refreshrecord e da um erro. Nao quero atualizar todo o clientdataset.
Utilizo dbexpress, sqldataser+provider+clientdataset. Firebird. Obrigado antecipado pela ajuda.
Eu tenho um relacionamento mestre-detalhe, o mestre e inserido sem o codigo da chave primaria, uma triger no banco se encarrega de atribuir o codigo da chave primaria.
Agora como eu faco para atualizar so esse registro em meu clientDataSet mestre, pra poder pegar o codigo da chave primaria e assim inserir os detalhes.
Ja tentei configurando poAutoRefresh do provider, e nada. Tambem tentei refreshrecord e da um erro. Nao quero atualizar todo o clientdataset.
Utilizo dbexpress, sqldataser+provider+clientdataset. Firebird. Obrigado antecipado pela ajuda.
Eduardocar83
Curtir tópico
+ 0
Responder
Posts
13/08/2008
Thiago Vidal
Cara, esse é um dos problemas ridiculamente simples que o Delphi tem, que me decepcionam.
Para resolver esse problema, eu utilizo o evento OnUpdateRecord do provider, antes de inserir, e já defino qual vai ser o valor da chave primária, e com a opção ´PropogateChanges´ essa alteração volta para o ClientDataSet.
Para pegar o valor do generator, vc precisa executar o comando:
Espero ter sido claro.
Para resolver esse problema, eu utilizo o evento OnUpdateRecord do provider, antes de inserir, e já defino qual vai ser o valor da chave primária, e com a opção ´PropogateChanges´ essa alteração volta para o ClientDataSet.
Para pegar o valor do generator, vc precisa executar o comando:
select gen_id(GENERATOR_NAME, 1) from rdb$database
Espero ter sido claro.
Responder
Clique aqui para fazer login e interagir na Comunidade :)