Código
A exceção EDBEngineError permite a identificação de erros de bancos de dados gerados pela BDE.}
try
TblCli.Post;
except
on E: EDBEngineError do
if E.Errors[0].ErrorCode = DBIERR_KEYVIOL then
ShowMessage('Cliente já cadastrado.');
end;
{Note que a variável E, que vai identificar o erro, só precisa ser declarada no bloco de tratamento da exceção. No help você pode consultar outras propriedades de EDBEngineError que podem ser importantes.
Você também pode usar os eventos de erro do componente Table, sem precisar de blocos de tratamento.
}
procedure TFrmCadCli.TblCliPostError(DataSet: TDataSet; E:
EDatabaseError; var Action: TDataAction);
begin
if(E is EDBEngineError) then
with EDBEngineError(E) do
case Errors[0].ErrorCode of
DBIERR_KEYVIOL: ShowMessage('Cliente já cadastrado.');
DBIERR_REQDERR: ShowMessage('Campo obrigatório vazio.');
end
else
ShowMessage('Erro no banco de dados:' + #13#13 + E.Message);
Action := daAbort;
end;
{Alguns códigos de erro da BDE estão listados abaixo. Todas as constantes e funções relacionadas à API da BDE no Delphi estão na Unit BDE.pas, que deve ser adicionada à cláusula uses.
Constante Descrição
DBIERR_KEYVIOL Violação de chave primária
DBIERR_MAXVALERR Valor máximo excedido
DBIERR_FORIEGNKEYERR Erro de chave externa, como em integridade referencial
DBIERR_LOCKED Registro travado
DBIERR_FILELOCKED Arquivo travado
DBIERR_NETMULTIPLE Mais de um diretório usado como NetFileDir
DBIERR_MINVALERR Campo com valor mais baixo que valor mínimo
DBIERR_REQDERR Campo obrigatório faltando
Para desenvolver um sistema genérico de tratamento de erros, considere a opção de criar um método para o evento OnException do objeto Application. Esse método é chamado sempre que houver uma exceção em qualquer parte do sistema.
}
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009