Duplicando codigo com Generator

28/08/2004

0

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

Eliel_martins

Responder

Posts

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

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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar