Thalles63 Postado Agosto 5, 2009 Denunciar Share Postado Agosto 5, 2009 como posso tratar um erro de violaçao de chave primariaem um clientdataset?já tentei varias formase nenhuma deu resultado aquijá tentei com try except, no onposterror do clientdatasetetc...alguma sugestao? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Agosto 5, 2009 Denunciar Share Postado Agosto 5, 2009 como posso tratar um erro de violaçao de chave primariaem um clientdataset?um erro de violaçao de chave primaria, significa dizer que um campo utilizado como chave primaria não pode ter registros duplicadospara evitar isso voce pode montar uma rotina de tratamento exemplo:try // seu código ... exception on e: .... do begin // faça alguma coisa.... end; end;Maiores informações:http://www.fop.unicamp.br/informatica/inde...8&Itemid=36http://mail.firebase.com.br/pipermail/list...ary/038557.htmlabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thalles63 Postado Agosto 6, 2009 Autor Denunciar Share Postado Agosto 6, 2009 um erro de violaçao de chave primaria, significa dizer que um campo utilizado como chave primaria não pode ter registros duplicadospara evitar isso voce pode montar uma rotina de tratamento exemplo:try // seu código ... exception on e: .... do begin // faça alguma coisa.... end; end; Maiores informações: http://www.fop.unicamp.br/informatica/inde...8&Itemid=36 http://mail.firebase.com.br/pipermail/list...ary/038557.html abraço pois é.. eu sei disso o problema é o seguinte não sei se está certo mas eu li por aí que quando se usa um clientdataset ele não gera uma exceçao no post e sim no applyupdates por isso eu já descartei a opçao de colocar algo no evento onposterror do cds já tentei 48954312491843128 formas diferentes com todos os tipos de exceçoes e nada acontece aqui sei que em tempo de programa não vai mostrar nada tambem mas nem indo la no executavel e rodando por la resolveu... segue o codigo try fdados.clientdataset.Post; fdados.clientdataset.ApplyUpdates(0); except on e:edatabaseerror do showmessage('Data já cadastrada no sistema.'); end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Daniel Sanches Postado Agosto 6, 2009 Denunciar Share Postado Agosto 6, 2009 olha, da forma que você usou, era pra funcionar, pois todos os comandos que estão entre o try...except, serão testados e caso dê alguma exceção, vao para os comandos após o except. tente fazer um teste:try fdados.clientdataset.Post; fdados.clientdataset.ApplyUpdates(0); except on e: Exception do showmessage('Erro ao gravar o registro.'+#13+E.Message); end;com o código "except on E: Exception", você trata qualquer tipo de exceção ... talves com o EDataBaseError você não esteja conseguindo capturar o erro ...sempre utilizei o código acima com sucesso ...abraços !!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thalles63 Postado Agosto 6, 2009 Autor Denunciar Share Postado Agosto 6, 2009 (editado) então danielacabei de fazer um teste aquie descobri uma coisaele só não pega a exceçao de chave primária :/eu adcionei um botao pra testar lae daí dou um clique e nada acontecedou mais um clique nele ele aparece a mensagem dizendo que não pode fazer porque não esta em modo de inserção (porque o post de antes executou :/)será que é porque tenho uma chave primária "composta"?ela compõe 2 campos da minha tabela-------------------------------EDITbom.. já resolvi minha duvidacoloquei um reconcile error formfuncionou perfeitamente pro meu casopois estou fazendo uma inserçao em massa neste forme ele esta fazendo exatamente o q eu querose já existe ele aparece a tela com os dados do animal duplicadoe as opçoes do que afzerse é pra pular, corrigir e etce continua a inserçãose o proximo da lista não for duplicadoperfeitopodem dar como resolvido o tópico Editado Agosto 6, 2009 por Thalles63 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Thalles63
como posso tratar um erro de violaçao de chave primaria
em um clientdataset?
já tentei varias formas
e nenhuma deu resultado aqui
já tentei com try except, no onposterror do clientdataset
etc...
alguma sugestao?
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.