Fórum Como tratar erro de PK (primary key) e FK (secund. key) ? #40472
01/12/2003
0
Ao tentar deletar um arquivo que existe uma dependencia da erro de chave estrangeira. Como tratar este erro !
Estou usando apenas querys. Não uso table em momento algum de minha aplicação.
Como tratar o erro de violação de chave estrangeira que retorna do meu banco firebird ?
Como tratar o erro tambem de violação de chave primaria que retorna do meu banco firebird ?
Ao excluir registros e ao inserir registros repectivamente.
Estou usando apenas querys. Não uso table em momento algum de minha aplicação.
Como tratar o erro de violação de chave estrangeira que retorna do meu banco firebird ?
Como tratar o erro tambem de violação de chave primaria que retorna do meu banco firebird ?
Ao excluir registros e ao inserir registros repectivamente.
Midas
Curtir tópico
+ 0
Responder
Posts
01/12/2003
Travain
Você deve colocar no evento de erro da query o seguinte código:
Se for erro de chave primária o Firebird retorna este número: 335544665
Se for erro de chave estrangeira é este: 335544466
if errcode = 335544665 then
begin
MessageDlg(´Já existe esse registro.´,mtWarning,[mbOK],0);
abort;
end;
Na sua aplicação você coloca a mensagem de erro que você quiser.
Até mais.
Se for erro de chave primária o Firebird retorna este número: 335544665
Se for erro de chave estrangeira é este: 335544466
if errcode = 335544665 then
begin
MessageDlg(´Já existe esse registro.´,mtWarning,[mbOK],0);
abort;
end;
Na sua aplicação você coloca a mensagem de erro que você quiser.
Até mais.
Responder
Gostei + 0
01/12/2003
Afarias
caso esteja usando IBX, um exemplo usando blobos TRY...EXCEPT seria::
try
{operação, ex: IBQuery1.Post}
except
on E: EIBInterBaseError do
HandleIBError(E.SQLCode, E.IBErrorCode);
end;
{ ... }
procedure HandleIBErrorCode(SQLCode, IBErrorCode: Integer);
begin
case IBErrorCode of
335544665: {mensagem de erro chave primária}
335544466: {mensagem de erro chave estrangeira}
end;
end;
todos códigos de erro do IB vc encontra no manual INTERBASE LANGUAGE REFERENCE.
T+
try
{operação, ex: IBQuery1.Post}
except
on E: EIBInterBaseError do
HandleIBError(E.SQLCode, E.IBErrorCode);
end;
{ ... }
procedure HandleIBErrorCode(SQLCode, IBErrorCode: Integer);
begin
case IBErrorCode of
335544665: {mensagem de erro chave primária}
335544466: {mensagem de erro chave estrangeira}
end;
end;
todos códigos de erro do IB vc encontra no manual INTERBASE LANGUAGE REFERENCE.
T+
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)