Cod. Automatico no Firebird DBX Mestre-detalhe

Delphi

19/04/2006

Olá pessoal...

Estou com um problema, acredito que seja relativamente simples...

Na minha aplicação estou utilizando dbexpress e ClientDataSet pra conectar ao FireBird.

Para a geração da chave primária, código auto incremento, uso uma trigger que guarda o valor do ultimo cadastro e no Before insert da tabela pego o valor da generator e incremento 1...

Estou com o seguinte problema, a tabela que uso é do tipo mestre detalhe, dai na minha aplicação o codigo só será gerado quando da o post na tabela, só que se eu entro no grid que é o detalhe o sistema gera erro, devido ao codigo que ainda não foi gerado logicamente porque ainda não dei post na tabela...

Como é que é tratado esse problema?

Agradeço a ajuda de todos....


Gardel

Gardel

Curtidas 0

Respostas

Titanius

Titanius

19/04/2006

Amigo, como todo mestre-detalhes, o filho precisa saber o codigo do pai antes de gravar, e este deve estar gravado anteriormente... então o passo é simples, basta vc pegar o codigo do pai antes, e salva-lo antes do filho?

Provalvemente vc esta usando Generator para isso.. bem, ao inves da trigger, vc devera usar um sql normal na sua aplicacao pra trazer este codigo... insira o seguinte codigo:

select gen_id(NOME_GENERATOR, INC) from rdb$database


onde:
NOME_GENERATOR = Nome do seu generator
INC = Valor a ser incrementado, normalmente 1


pronto, ele ira trazer o codigo... ai é só vc gravar ele e pronto.


GOSTEI 0
Paullsoftware

Paullsoftware

19/04/2006

dê um post na tabela Master antes de iniciar as operações com o detalhe
lembre-se de verificar o estado atual de sua tabela master..


GOSTEI 0
POSTAR