Mostrar Exception

Delphi

20/04/2007

Ola Amigos do Forum!
Bom estou querendo a seguinte orientação como faço para mostrar uma exception que eu criei como mensagem?
Por Exemplo:
Criei uma Stored Procedure da Seguinte Maneira:

SET TERM ^ ;

CREATE PROCEDURE SP_BAIXAESTOQUE (
    cod integer,
    quant numeric(15,2))
as
declare variable qtatual numeric(15,2);
begin
  select e.quantidade from estoque E where e.codproduto = :cod
  into :qtatual;
 if (:qtatual > :quant ) then
   begin
     update estoque E set E.quantidade = :qtatual - :quant
     where (E.codproduto = :cod);
   end
 else
  begin
    exception retiraestoque;
  end
end^

SET TERM ; ^

GRANT SELECT,UPDATE ON ESTOQUE TO PROCEDURE SP_BAIXAESTOQUE;

GRANT EXECUTE ON PROCEDURE SP_BAIXAESTOQUE TO SYSDBA;


Criei uma exception Assim:

CREATE EXCEPTION RETIRAESTOQUE ´quantidade excedente venda negada´;


Estou Utizando o Banco IB 6.5
Fiz uma conexão com minha SP Com o componente TIBStoredProcedure da guia Interbase e executo éla da seguinte maneira:
   try
     begin
      spBaixa.ParamByName(´cod´).AsInteger:= StrToIntDef(Edit1.Text,0);
      spBaixa.ParamByName(´quant´).AsInteger:= StrToIntDef(Edit2.Text,0);
      spbaixa.ExecProc;
      frmDM.TEstoque.Refresh;
     end
   except
     spbaixa.Transaction.RollbackRetaining;
   end;

tudo funciona que é uma beleza só que quando cai no excpetion da minha SP a mensagem não é retornada Alguem poderia me dizer como Faço a mensagem da excption aparecer para o usuario no sistema?
sistema está sendo desenvolvido no delphi 7


Alecsandro Moura

Alecsandro Moura

Curtidas 0

Respostas

Fabiano Góes

Fabiano Góes

20/04/2007

teste assim:
   try 
     begin 
       spBaixa.ParamByName(´cod´).AsInteger:= StrToIntDef(Edit1.Text,0); 
       spBaixa.ParamByName(´quant´).AsInteger:= StrToIntDef(Edit2.Text,0); 
       spbaixa.ExecProc; 
       frmDM.TEstoque.Refresh; 
     end 
   except 
     on e: Exception do
     begin
       spbaixa.Transaction.RollbackRetaining; 
       raise Exception.Create(e.Message);
     end;
   end;



GOSTEI 0
Alecsandro Moura

Alecsandro Moura

20/04/2007

Valeu pela força cara mas continua na mesma :( , se eu executo a operação éla aparece no debugue do delphi mas quando executo direto pelo exe não acontece nada, o negocio é eu usar o bloco e criar uma mensagem simulando o exception :lol:
estilo:
except
     begin
       spbaixa.Transaction.RollbackRetaining;
       MessageBox(Application.Handle,Pchar(´Venda execendete ao estoque"´),´Venda Negada,
        MB_OK + MB_ICONERROR);



GOSTEI 0
Marco Salles

Marco Salles

20/04/2007

ja tentou no ver a mensagem no evento UpdateError ????


GOSTEI 0
POSTAR