Fórum Mudar Mensagem de Erro #37452

18/07/2003

0

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

Responder

Posts

18/07/2003

Afarias

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


Responder

Gostei + 0

18/07/2003

Marcelootone

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


Responder

Gostei + 0

18/07/2003

Afarias

|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


Responder

Gostei + 0

19/07/2003

Marcelootone

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?


Responder

Gostei + 0

19/07/2003

Afarias

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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar