Mensagem de Erro SQL SERVER
08/03/2005
0
Guima
Posts
08/03/2005
Bon Jovi
Ex. Delphi:
try StrToInt(´a´); except on E: Exception do if Pos(´is not a valid integer value´, AnsiLowerCase(E.Message)) > 0 then Application.MessageBox(´Número inteiro inválido´, ´´, 0) end;
Dependendo da situação isso pode furar, se a msg vir diferente/em outra língua. No caso do Oracle ele retorna um código do erro na msg. No Sql Server acho q não tem isso.
Outra opção é usando ClientDataSet, onde possui o evento OnReconcileError, mas não sei se vc está usando cds ou até Delphi.
10/03/2005
Guima
11/03/2005
Felipe_cduarte
vou dar um help. vc pode criar um procedimento +- assim
procedure TrataErrosSQLServer(CodErro: Integer);
Var Descricao : String;
begin
Descricao := DtModule.ADOConnection1.Errors.Item[0].Description;
if ( CodErro = 2627 ) then // Violação de constraint unique
begin
if ( Pos( ´nome_da_chave´, Descricao ) > 0 ) then
begin
Application.MessageBox(´Já existe um ?? cadastrado.´, ´Atenção !!!´, MB_ICONSTOP );
end;
end
else if ( CodErro = 547 ) then // Conflitos ( Inserção, Alteração ou Exclusão )
begin
if ( Pos( ´fk_cliente´, Descricao ) > 0 ) then
Application.MessageBox(´cliente nao pode ser excluido´ , ´Atenção!!!´ , MB_ICONSTOP )
end
else
Application.MessageBox( PChar( ´Erro: ´ + IntToStr( CodErro ) + ´ - ´ + Descricao ), ´Atenção !!!´, MB_ICONEXCLAMATION );
end;
esses códigos estão documentados no BOL
pra chamar o procedimento vc pode usar um bloco de try/except
try
dm.begintrans;
// codigo
dm.committrans;
except
on EOleException do
begin
TrataErrosSQLServer( DtModule.ADOConnection1.Errors.Item[0].NativeError );
end;
end;
[]´s
11/03/2005
Guima
Clique aqui para fazer login e interagir na Comunidade :)