Key Violation
Como evitar a mensagem de erro Key Violation usando Query?
Obrigado pela atenção!
Obrigado pela atenção!
Douglas
Curtidas 0
Respostas
Andre0201
08/08/2003
A mensagem Key Violation ocorre quando há uma violação da chave primaria, portanto via programação vc deve evitar que isto ocorra.
GOSTEI 0
Seek
08/08/2003
Olá,
O melhor a fazer é o seguinte: Quando for digitado o Codigo ou os campos da Chave Principal, você faz uma consulta na tabela verificando se este registro já existe, caso já exista, mande uma mensagem para o usuário informando a existência deste registro evitando assim o Key Violation, é trabalhoso, porém funciona. Caso nâo exista, então grave o registro.
ou dentro da query faça: Insert ignore into tabela ....
O melhor a fazer é o seguinte: Quando for digitado o Codigo ou os campos da Chave Principal, você faz uma consulta na tabela verificando se este registro já existe, caso já exista, mande uma mensagem para o usuário informando a existência deste registro evitando assim o Key Violation, é trabalhoso, porém funciona. Caso nâo exista, então grave o registro.
ou dentro da query faça: Insert ignore into tabela ....
GOSTEI 0
Clenio
08/08/2003
Crie uma procedure assim:
procedure TForm1.Nome da sua tabela PostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
Var
ErroMens :String;
begin
ErroMens := E.Message;
if ErroMens = ´Key violation.´ then
begin ShowMessage(´Este Registro já é Cadastrado, Tente Outro !´); Obs:você coloca a mensagem que quizer
action := daAbort;
DBEdit1.SetFocus;
end;
espero ter ajudado, boa sorte.
procedure TForm1.Nome da sua tabela PostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
Var
ErroMens :String;
begin
ErroMens := E.Message;
if ErroMens = ´Key violation.´ then
begin ShowMessage(´Este Registro já é Cadastrado, Tente Outro !´); Obs:você coloca a mensagem que quizer
action := daAbort;
DBEdit1.SetFocus;
end;
espero ter ajudado, boa sorte.
GOSTEI 0