Capturar erro do banco de dados
Caros,
estou com um pequeno problema, eu criei um formulário de erros para que todo erro ocorrido ou exceção no sistema será chamado este formulário, só que todas as minhas stored procedures no sql server tem tratamento de mensagem, caso aconteça alguma coisa no cadastro, alteração ele irá chamar mensagens como esta que segue abaixo:
if @CtCx = @CtContraPart
begin
select @errno = 95004,
@errmsg = ´Os Caixas para abertura e Contrapartida da abertura devem ser diferentes !!!´
goto error
end
Até aí blz, ele retorna a mensagem do erro e lança na tela do cliente. Só que eu teria que capturar o código do Erro como mostra acima ´95004´, e no meu form de erro, ele tem tratamento EDATABASEERROR e EDBENGINERERROR, só que ele não entra em nenhuma dessas duas classes de exceção, ele entra no EXCEPTION, só que no EXCEPTION eu não tenho como pegar o código do erro da stored procedure. Alguém sabe como resolver este problema? Qual classes de Exceção eu utilizarei para buscar este código de erro? Eu utilizo o BDE para conectar no banco.
Obrigado
Atenciosamente,
Halex Maciel
Analista de Sistemas
Cuiabá-MT
estou com um pequeno problema, eu criei um formulário de erros para que todo erro ocorrido ou exceção no sistema será chamado este formulário, só que todas as minhas stored procedures no sql server tem tratamento de mensagem, caso aconteça alguma coisa no cadastro, alteração ele irá chamar mensagens como esta que segue abaixo:
if @CtCx = @CtContraPart
begin
select @errno = 95004,
@errmsg = ´Os Caixas para abertura e Contrapartida da abertura devem ser diferentes !!!´
goto error
end
Até aí blz, ele retorna a mensagem do erro e lança na tela do cliente. Só que eu teria que capturar o código do Erro como mostra acima ´95004´, e no meu form de erro, ele tem tratamento EDATABASEERROR e EDBENGINERERROR, só que ele não entra em nenhuma dessas duas classes de exceção, ele entra no EXCEPTION, só que no EXCEPTION eu não tenho como pegar o código do erro da stored procedure. Alguém sabe como resolver este problema? Qual classes de Exceção eu utilizarei para buscar este código de erro? Eu utilizo o BDE para conectar no banco.
Obrigado
Atenciosamente,
Halex Maciel
Analista de Sistemas
Cuiabá-MT
Halexmaciel
Curtidas 0
Respostas
Tnaires
12/12/2003
Olá Halex
Me desculpe perguntar isso, mas vc não deixou bem claro... Vc usou o método Message do Exception?
Ex
Sucesso.
Me desculpe perguntar isso, mas vc não deixou bem claro... Vc usou o método Message do Exception?
Ex
try // comandos except on E: Exception do begin ShowMessage(E.Message); end; end;
Sucesso.
GOSTEI 0
Halexmaciel
12/12/2003
Bem, eu tenho várias stored procedures no banco, e todas elas mandam mensagem de erros pro sistema, tipo: ´O cliente quer fazer uma venda de um item que está zerado no estoque´ a stored procedure manda a mensagem avisando que o item não possui estoque. Nesta hora a eu passo dentro do banco um raiseerror @errono @errmsg e dou um rollback só que o que vai para o cliente é somente o @errmsg e eu gostaria de capturar o @errono que nada mais é que o código do erro, como mostro abaixo:
if @CtCx = @CtContraPart
begin
select @errno = 95004,
@errmsg = ´Os Caixas para abertura e Contrapartida da abertura devem ser diferentes !!!´
goto error
end
tenho que pegar o código ´95004´ entende?
Só que ele gera uma exceção que não é do tipo EDATABASEERROR OU EDBENGINERERROR. Ele só é capturado pela classe EXCEPTION, só que eu não pego o código quando cai neste tipo de exceção. Você pode ajudar? Obrigado
if @CtCx = @CtContraPart
begin
select @errno = 95004,
@errmsg = ´Os Caixas para abertura e Contrapartida da abertura devem ser diferentes !!!´
goto error
end
tenho que pegar o código ´95004´ entende?
Só que ele gera uma exceção que não é do tipo EDATABASEERROR OU EDBENGINERERROR. Ele só é capturado pela classe EXCEPTION, só que eu não pego o código quando cai neste tipo de exceção. Você pode ajudar? Obrigado
GOSTEI 0
Tnaires
12/12/2003
Ah cara, entendi
A mensagem de erro pega beleza, mas o código do erro que dá bronca né?
Vejamos... A propriedade Message pega a mensagem certo? Tente usar a propriedade HelpContext pra pegar o código do erro.
Sucesso
A mensagem de erro pega beleza, mas o código do erro que dá bronca né?
Vejamos... A propriedade Message pega a mensagem certo? Tente usar a propriedade HelpContext pra pegar o código do erro.
Sucesso
GOSTEI 0