Porque minha Exception dentro do BD executa mas não levanta a mensagem?
16/01/2017
0
Olá boa tarde!
Alguém conseguiria me explicar porque esta exception executa mas não exibida a mensagem?
É o seguinte, antes de baixar um estoque de Promoção, verifico se tem qtde suficiente no estoque de promoção, caso não exista, disparo uma exception.
Fiz o teste, a exception é executada, ms mensagem não aparece.
===============================
SELECT CODPROD, QTDE
FROM CADPROD_PROMOCAO
WHERE (CODPROD =:CODPROD)
INTO :vCodprod, qtprom;
if (vCodprod > '') then
begin
if (:QTDE > QTPROM) then
exception QTDE_PROMOCAO;
end
===============================
CREATE EXCEPTION QTDE_PROMOCAO 'Exemplo teste de exception';
COMMENT ON EXCEPTION QTDE_PROMOCAO IS
'Qtde de promocao';
===============================
---------------------------------------------
Try
//----------------------------------//
//....Inicio do Start Transaction //
//----------------------------------//
DMCN.Start();
//-----------------------------------------//
//...Estorna Contas a Receber //
//-----------------------------------------//
IF (DMMVD_Ds_Movenda_state <> 'I') Then
Grddv.Estorna_Movenda_Receber(Codvenda);
Inherited;
//--------------------------------//
//...Commit //
//--------------------------------//
ErroSistema := 1;
DMCN.Commit(); //...Grava o Registro
Except on E: Exception do
Begin
Msg := 'ATENÇÃO!'+#13+'Aconteceu um erro ao gravar o registro!'+#13+#13+E.message;
Application.MessageBox(Pchar(msg),'Erro',MB_Ok+mb_IconError);
DMCN.Rollback(); //...Gerou um erro ao gravar
But_alterar.Down := true;
DMMVD.Cds_Movenda.Edit;
End;
End;
Alguém conseguiria me explicar porque esta exception executa mas não exibida a mensagem?
É o seguinte, antes de baixar um estoque de Promoção, verifico se tem qtde suficiente no estoque de promoção, caso não exista, disparo uma exception.
Fiz o teste, a exception é executada, ms mensagem não aparece.
===============================
SELECT CODPROD, QTDE
FROM CADPROD_PROMOCAO
WHERE (CODPROD =:CODPROD)
INTO :vCodprod, qtprom;
if (vCodprod > '') then
begin
if (:QTDE > QTPROM) then
exception QTDE_PROMOCAO;
end
===============================
CREATE EXCEPTION QTDE_PROMOCAO 'Exemplo teste de exception';
COMMENT ON EXCEPTION QTDE_PROMOCAO IS
'Qtde de promocao';
===============================
---------------------------------------------
Try
//----------------------------------//
//....Inicio do Start Transaction //
//----------------------------------//
DMCN.Start();
//-----------------------------------------//
//...Estorna Contas a Receber //
//-----------------------------------------//
IF (DMMVD_Ds_Movenda_state <> 'I') Then
Grddv.Estorna_Movenda_Receber(Codvenda);
Inherited;
//--------------------------------//
//...Commit //
//--------------------------------//
ErroSistema := 1;
DMCN.Commit(); //...Grava o Registro
Except on E: Exception do
Begin
Msg := 'ATENÇÃO!'+#13+'Aconteceu um erro ao gravar o registro!'+#13+#13+E.message;
Application.MessageBox(Pchar(msg),'Erro',MB_Ok+mb_IconError);
DMCN.Rollback(); //...Gerou um erro ao gravar
But_alterar.Down := true;
DMMVD.Cds_Movenda.Edit;
End;
End;
Antonio Jesus
Curtir tópico
+ 0
Responder
Posts
16/01/2017
Paulo Hendrix
Este é, o código exato da sua Procedura, no seu sistema. manda informações de como estão as colunas no seu banco de dados. estão em INT BOOLEAN etc... pode ser um erro de conversão ou algo que ainda não pode ver.. se poder injetar mais infor, sera mais facil.. não esquece. quanto mais info mais rápido respostas ... banco de dados usado. dados sobre a tabela se as colunas estão em modo int boolean string etc.. ok abraço..
Responder
Clique aqui para fazer login e interagir na Comunidade :)