A dica a seguir apresenta o código para evitar que o programa pare e envie uma mensagem padrão de erro por Key Violation (Chave Primária).

Para isto, o código deve ser inserido no evento OnPostError do componente de banco de dados (Table ou Query).

Toda vez que ocorrer um erro de gravação no banco de dados este evento será executado, sendo que na variável de parâmetro "E" deste procedimento é armazenado a mensagem que será apresentada na tela.

No caso de Key Violation a mensagem é exatamente esta: "Key violation.".

Para realizar um tratamento deste erro, testa-se se a mensagem ocorrida é "Key violation". Se for verdadeiro o processo de gravação é abortado (Action := daAbort), como mostra o código a seguir:

Procedure TForm1.Table1PostError(DataSet: TDataSet; E: EDatabaseError;var Action: TDataAction);
 Var 
 ErroMens :String;
 begin 
 ErroMens := E.Message; 
 if ErroMens = Key violation. then 
 begin ShowMessage(Chave Primária Inválida !); 
 action := daAbort; 
 end;
 end;