Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Problema Key Violation


Thalles63

Pergunta

4 respostass a esta questão

Posts Recomendados

  • 0
como posso tratar um erro de violaçao de chave primaria

em um clientdataset?

um erro de violaçao de chave primaria, significa dizer que um campo utilizado como chave primaria não pode ter registros duplicados

para 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

Link para o comentário
Compartilhar em outros sites

  • 0
um erro de violaçao de chave primaria, significa dizer que um campo utilizado como chave primaria não pode ter registros duplicados

para 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;

Link para o comentário
Compartilhar em outros sites

  • 0

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 !!!

Link para o comentário
Compartilhar em outros sites

  • 0

então daniel

acabei de fazer um teste aqui

e descobri uma coisa

ele só não pega a exceçao de chave primária :/

eu adcionei um botao pra testar la

e daí dou um clique e nada acontece

dou 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

-------------------------------

EDIT

bom.. já resolvi minha duvida

coloquei um reconcile error form

funcionou perfeitamente pro meu caso

pois estou fazendo uma inserçao em massa neste form

e ele esta fazendo exatamente o q eu quero

se já existe ele aparece a tela com os dados do animal duplicado

e as opçoes do que afzer

se é pra pular, corrigir e etc

e continua a inserção

se o proximo da lista não for duplicado

perfeito

podem dar como resolvido o tópico

Editado por Thalles63
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...