28/08/2004

Duplicando codigo com Generator

Ola pessoal !, esta acontecendo o seguinte problema, esta gerando o codigo de 2 (dois) em 2 (dois), assim 2 - 4 - 6 - 8 e etc... da um analisa se criei errado para criar os codigos ..

eu fiz da seguinte forma para gerar o codigo do Cliente, estou usando Interbase. Criei o Generator assim : [u:3ebddd05bf][b:3ebddd05bf]CREATE GENERATOR ´CD_CLIENTE_GEN´; [/b:3ebddd05bf][/u:3ebddd05bf]

Criei uma Trigger assim : [b:3ebddd05bf]CREATE TRIGGER ´GERARCODIGOCLIENTE´ FOR ´CLIENTE´
ACTIVE BEFORE INSERT POSITION 0
As
Begin
New.CD_Cliente = Gen_ID(CD_CLiente_Gen,1);
End
SET TERM ;[/b:3ebddd05bf]

No Datamodule eu configurei na propriedade da QUERY o GENRATORFIELD, configurei da seguinte maneira : Generator => CD_CLIENTE_GEN / Field => CD_CLIENTE / ON POST

Obrigado Pessoal
Estou no MSN : eliel_martins@hotmail.com ou manda email para mim : eliel_martins@hotmail.com


Eliel_martins

Respostas

28/08/2004

Vinicius2k

Colega,

No IBX, fazendo uso da propriedade GeneratorField do DataSet, vc não precisa de Triggers para incrementar os generators... o que está ocorrendo é que a função GEN_ID está sendo chamada duas vezes...
Seu registro recebe um valor quando é postado e o generator é incrementado, quando ele chega ao banco para insert a trigger é disparada e ele recebe um novo valor e o generator é incrementado novamente...

Espero ter ajudado...
T+


Responder Citar

28/08/2004

Gandalf.nho

Ou modifique a trigger assim:

ACTIVE BEFORE INSERT POSITION 0
As
Begin
if (new.CD_Cliente is null) then
New.CD_Cliente = Gen_ID(CD_Cliente_Gen,1);
End
SET TERM ;

Isso evita o referido problema.


Responder Citar