Boa noite pessoal,
Eu nunca fiz tratamentos de erros no delphi, e procurando no forum 
encontrei esse código abaixo.  Muito interessante, pois queria 
mudar aquelas menssagens de erros que é mostrada para o usuário.
Pergunta :
Em que evento eu coloco esses códigos?
Pois tentei colocar no PostError do AdoTable, e ñ da certo.
Na verdade queria colocar o código para atender toda aplicação, tem 
como ?

OBS.: Uso o MSSql

procedure ErrorMsg(E: exception);
begin
if e is EDBengineError then
TrataErro(E as edbEngineError)
else
application.showException(E);
end; // procedure ErrorMsg(Sender : TObject; E: exception);

procedure TrataErro(E: eDBEngineError);
var nSQLError : integer;
cSQLMessage : string;
cTable : string;
x : integer;
begin
nSQLError := 0;
cSQLMessage := '';
for x:=0 to e.ErrorCount -1 do
if e.errors[x].NativeError <> 0 then
begin
nSQLError := e.errors[x].NativeError;
cSQLMessage := e.errors[x].message;
end;
if nSQLError <> 0 then
begin
cTable := '';
x := pos('table"',cSQLMessage);
if x > 0 then
begin
cTable := copy(cSQLMessage,x+7,20);
x := pos('"',cTable);
if x > 0 then
cTable := copy(cTable,1,x-1);
end;
case nSQLError of
1 : messagedlg('Registro já está cadastrado.',mtinformation,
[mbok],0);
2292 : messagedlg('Este registro não pode ser excluído.'+#13+
'Existem outros registros ligados a ele.'+#13+
'Exclua primeiro os regitros filhos.', mtinformation,
[mbok],0);
12203: messagedlg('Não foi possível a conexão com o banco de 
dados.'+#13+
'Verifique se a estaçaõ está ligada à 
rede.'+#13+
'Caso esteja, entre em contato com a 
Informática.'
,mtinformation,[mbok],0);
3114: messagedlg('Não foi possível a conexão com o banco de 
dados.'+#13+
'Verifique se a estação está ligada à 
rede.'+#13+
'Caso esteja, entre em contato com a 
Informática.'
,mtinformation,[mbok],0);
else
showmessage(IntToStr(nSQLError)+' '+cSQLMessage+' dfsdvgsd');
end; // if x > 0
end // if nSQLError <> 0
else
messagedlg('Ocorreu um erro inesperado.'+#13+
'Entre em contato com a Informática.',mtinformation,
[mbok],0);
end; // procedure TrataErro(E: eDBEngineError);


Responder a