GARANTIR DESCONTO

Fórum Como retornar a chave primária? #52116

10/08/2005

0

Olá Amigos!

Estou usando o interbase 6.01 com componentes de acess DbExpress, utilizo o processo de geraçao de chaves primárias através de triggers com o valor armazenado no generator. Quando vou inserir um novo registro no meu ClientesDataSet deixo o campo da chave primária, nulo, para que o interbase se encarregue de gerá-la pra mim. até aí sem problemas, contudo a minha pergunta é [b:f32a575147]Como faço para aparecer o valor dessa chave primária no meu registro[/b:f32a575147] após dar o ApplicUpdate() ou seja apos gravar o registro no banco.. ?

Obrigado pela atenção


Robbbberto

Robbbberto

Responder

Posts

10/08/2005

Eduardo Pereira

robbbberto,

O uso de trigger com generator no banco pode dar este tipo de problema, por que o ClientDataSet não toma conhecimento do valor do ID gerado pelo generator (a não ser se fechar e abrir a tabela, o que não é desejável).
Eu costumo fazer da seguinte forma:
- No banco, existe uma SP que gera o identificador para a tabela desejada (através de um generator, como no trigger)
- No evento BeforeUpdateRecord do DataSetProvider, a SP é chamada e o valor gerado é atribuído à chave primária.
Ex.:
stpGeraID.ExecProc;
DeltaDS.FieldByName(´ID´).NewValue := stpGeraID.ParamByName(´ID´).AsInteger;

- IMPORTANTE: No DataSetProvider, em Options, poPropogateChanges deve estar em TRUE. Desta forma o valor atribuído ao campo ID é refletido no ClientDataSet.

Obs.: O texto acima foi adaptado de uma mensagem minha em outro thread aqui no fórum. O thread completo está em http://forum.clubedelphi.net/viewtopic.php?t=65412&highlight=

[]´s
Eduardo Pereira


Responder

Gostei + 0

11/08/2005

Robbbberto

Olá Eduardo..
Obrigado pela atenção. Vou testar o seu procedimento..

Muito obrigado
Roberto Filho


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar