Array
(
)

Tratar Erro de MSG do ORACLE

Cabal
   - 15 fev 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á.


Motta
   - 15 fev 2006

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 :

#Código


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;



Cabal
   - 16 fev 2006

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....


Motta
   - 16 fev 2006

foi mal :

#Código



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;