Tratar Erro de MSG do ORACLE

15/02/2006

Gostaria de Saber como posso tratar um erro acontecido no oracle e eu mesmo filtar este erro na minha aplicação e traduzí-lo. Tem algun exemplos na Internet, mas todos usando a conexão com BDE. utilizo o ADO(EOleException) é a classe da excessão.
Agradeço desde já.


Cabal

Respostas

15/02/2006

Motta

Eu capturo a msg de erro e faça o tratamento usando s Function Pos

Que tipo de erro retorna ? Violação de constraint ? Triggers ?

Algo assim :

var s:string;
begin
...
exception
  one:exception do
  begin
      s := e.message;
      if Pos(´chk_valor´,s) > 0 then
        ShowMessage(´Valor Inválido´);
      if Pos(´ora-00001´,s) > 0 then
        ShowMessage(´Chave duplicada´);
      // etc 
  end;
end;



Responder Citar

16/02/2006

Cabal

Não estou conseguindo entender este trecho...

Devo inserir um TRY cert?
Fiz assim, mas ocorreu um erro:
[Error] Form_Principal.pas(81): Missing operator or semicolon
Ñ entendi o ONE e o EXCEPTION...

Procedure tform1.teste;
var
s:string;
e:Exception;
begin
TRY
Adoconnection1.Open;
except
exception
one:exception do
begin
s := e.message;
if Pos(´chk_valor´,s) > 0 then
ShowMessage(´Valor Inválido´);
if Pos(´ORA-01017:´,s) > 0 then
ShowMessage(´Chave duplicada´);
// etc
end;
end;

Valeu amigo Obrigadão....


Responder Citar

16/02/2006

Motta

foi mal :


var s:string; 

try 
... // faz alguma operação no banco
exception 
  on e:exception do // <<====
  begin 
      s := e.message; 
      if Pos(´chk_valor´,s) > 0 then 
        ShowMessage(´Valor Inválido´); 
      if Pos(´ora-00001´,s) > 0 then 
        ShowMessage(´Chave duplicada´); 
      // etc 
  end; 
end; 




Responder Citar