Mudar Mensagem de Erro

Firebird

18/07/2003

Criei a Integridade Referencial no meu Banco de Dados. Agora qdo vou excluir um registro através do Sistema ele barra! Porem coloca aquela horrivel mensagem em Inglês.

Como faço para tratar isso?

Gostaria que alguém desse um exemplo, pois já tentei usando exception no banco e no sistema mas não consegui.

Obrigado.


Marcelootone

Marcelootone

Curtidas 0

Respostas

Afarias

Afarias

18/07/2003

use blocos TRY..EXCEPT para capturar a exceção e dar sua mensagem.


GOSTEI 0
Marcelootone

Marcelootone

18/07/2003

Tá isso eu já sei!!!

mas como? quando? onde? no Delphi ou no Banco? o que eu vou testar?
essas são minhas dúvidas!!!


GOSTEI 0
Afarias

Afarias

18/07/2003

|mas como?

try

except
{tratamento de erro}
end;


|quando?

Quando vc precisar. Ex, quando for salvar um registro (em um POST por ex)


|onde? no Delphi ou no Banco?

Como assim?? No Interbase não tem TRY...EXCEPT


|o que eu vou testar?

Para saber o erro?? Depende do tipo de erro. Vc pode testar a mensagem (E.Message) ou, se o erro for EIBInterbaseError vc pode testar os códigos (SQLCode, ErrorCode)


|essas são minhas dúvidas!!!

Espero q isso ajude. Dê uma lida em algum material sobre tratamento de exceções no Delphi.


Abraço


GOSTEI 0
Marcelootone

Marcelootone

18/07/2003

Me desculpe mas continuei sem as respostas que preciso. E para sua informação o Interbase tem excepty, você pode usa-lo em uma procedure dentro do banco.

O erro que estou tentando tratar é no evento Delete. Quando tento excluir um registro que faz referência a outro (Integridade Referêncial, Primary Key, Foreign Key) o Delphi me retorna uma mensagem de erro que creio eu sejá do Interbase.

Já tentei fazer o tratamento de try excepty no evento OnDeleteError do IBDataSet, mas não consegui, por isso disse que precisava de um exemplo.

Pode me ajudar?


GOSTEI 0
Afarias

Afarias

18/07/2003

|E para sua informação o Interbase tem excepty, você pode usa-lo em
|uma procedure dentro do banco.

Não, não existe tal comando no IB. Vc pode sim, criar uma exceção com uma mensagem de erro com o comando:

CREATE EXCEPTION nome_exceção ´mensagem de erro´;

e, gerar essa exceção numa trigger ou procedure com:

EXCEPTION nome_exceção;

É verdade q vc pode tratar um erro do banco no próprio banco (em StoredProcs ou Triggers), mas ai o comando é WHEN DO

Tá tudo na documentação, é só parar pra ler um pouco.


|O erro que estou tentando tratar é no evento Delete. Quando tento |excluir um registro que faz referência a outro (Integridade Referêncial, |Primary Key, Foreign Key) o Delphi me retorna uma mensagem de erro |que creio eu sejá do Interbase.

Vc tem certeza que leu pelo menos minha mensagem anterior?? Dê uma olhadina de novo...

.

.

.

viu?? lá tem:

´Quando vc precisar. Ex, quando for salvar um registro (em um POST por ex)´

é só trocar o POST pelo DELETE ok?!

try
MeuIBDataSet.Delete;
except
on EIBInterbaseError do
{tratamento de erros do IB}
end;



Espero q isso ajude.

T+


GOSTEI 0
POSTAR