[firebase-br] MEIO OFF: erro ao inserir registros(violação de chave primária)
Reijanio Nunes Ribeiro
rnribeiro em gmail.com
Ter Jan 29 12:00:27 -03 2008
vou dar uma olhada nisso paulo
Em 29/01/08, Paulo S X Soares <paulosoares.br em gmail.com> escreveu:
>
> Eu não sei a solução, mas tenho uma sugestão. Em vez de trabalhar com
> cache,
> usar status. Ou seja, a cada item inserido, gravar na base mesmo, mas com
> um
> campo Confirmado='N'. Isso tem duas vantagens imediatas:
> 1) Caso o sistema seja interrompido no meio da inclusão dos itens, ao
> acessar o programa os itens inseridos já estarão lá.
> 2) Ao salvar (confirmar) a nota, basta um update para Confirmado='S'.
>
> *** Tópico repetido, post repetido.
>
>
> Em 25/01/08, Reijanio Nunes Ribeiro <rnribeiro em gmail.com> escreveu:
> >
> > bom dia a todos estou com um pequeno problema em um projeto meu onde
> tenho
> > um form de entrda de produtos
> > e estou trabalhando com dataset temporário: pra inserir no datasetr
> > tempo´rario ta tudo normal
> > agora o problema vem ao finalizar a nota ao salvar e enviar os registros
> > do
> > dataset temporário para a tabela no Bd se inserir so um item funciona
> blz
> > aogar se inserir mais de um item ao danou-se da violação de chave
> primária
> > estou ficando maluco de tanto tentar alternativas e não da certo
> poderiam
> > me
> > ajudar pois ao tirar o achave primaria funciona mais duplica os
> > códigos que
> > deveriam ser auto numerados, parece que a trigger não dispara a auto
> > numeração bom antes de tudo lembro aos amigos que o campo código esta
> > setado
> > como required=false atualmente mais ja tentei da um select max no on new
> > record do clientadaset e é sempre a mesma coisa se inserir só um item
> > funciona blz mais mais de um da o erro , segue o codigo pra copiar a
> > tabela
> > e a trigger e o generator e :
> >
> > procedure que faz o envio dos registro da tabela
> > temporária(clientdataset)pra definitiva
> >
> > procedure T_NFentrada.copiaregistro
> > begin
> > d_nfentradalocal.Edit; //dataset temporário
> > d_nfentradalocal.Last;
> > d_nfentradalocal.First;
> > while not d_nfentradalocal.Eof do begin
> > dmdados.D_NFentrada.Open;
> > dmdados.D_NFentrada.Active = True;
> > dmdados.D_NFentrada.Insert;
> >
> > dmdados.D_NFentradaNUMNOTA.value := d_nfentradalocalNUMNOTA.value;
> > dmdados.D_NFentradaCODPROD.value := d_nfentradalocalCODPROD.value;
> > dmdados.D_NFentradaQTDE.value := d_nfentradalocalQTDE.value;
> > dmdados.D_NFentradaVLRUNITARIO.value:=
> d_nfentradalocalVLRUNITARIO.value;
> > dmdados.D_NFentradaVLRTOTAL.value := d_nfentradalocalVLRTOTAL.value;
> > dmdados.D_NFentradaIPI.value := d_nfentradalocalIPI.value;
> > dmdados.D_NFentradaVLRIPI.value := d_nfentradalocalVLRIPI.value;
> > dmdados.D_NFentrada.Post ;
> > d_nfentradalocal.Next;
> > end;
> > d_nfentradalocal.EmptyDataset;
> > dmdados.D_NFentrada.ApplyUpdates(0);
> > dmdados.D_NFentrada.Close;
> > ---------------------------------------------------------------------
> > codigo pra gerar auto numeração no firebird
> >
> > create generator gen_d_nfentrada_id;
> >
> > set term ^;
> >
> > create trigger d_nf_entrada_bi for d_nfentrada
> > active before insert position 0
> > as
> > begin
> > if (new.codigo is null) then
> > new.codigo = gen_id(gen_d_nfentrada_id,1);
> > end^
> > set term;^
> >
> > podem me ajudar não sei mais o que fazer
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
>
>
>
> --
> ___________________________________
> *** Paulo Sergio Xavier Soares ***
> Skype: Allumo, E-mail: paulosoares.br em gmail.com, MSN:
> paulosxs em yahoo.com.br
> Consultor em Informatica
> Matematica - UEM
>
> Obs: Se o seu leitor de e-mail não estiver configurado para emitir
> resposta
> automática do recebimento, favor responder essa mensagem para o confirmar.
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista