Fórum Exception Firebird #382084

24/07/2010

0

O exception no Firebird apresenta tudo na mensagem. A mensagem apresentada ficou assim:   exception 7
NAO_TEM_ESTOQUE
Não possui quantidade suficiente em estoque
AT trigger 'INS_CORPOSAIDA'.

Será que tem uma forma de apresentar só o texto mesmo do exception?

Valeu gente.
Gustavo

Gustavo

Responder

Post mais votado

25/07/2010

vc não me entendeu se vc tiver usando clientdataset no evento oneconcileerror vc testa a mensagem , geralmente com
pos ou copy e trata a mensagem de uma forma mais amigavel qnd eu disse "como vc ta chamando ? " eu quis me referi a detalhes (componentes de acesso ,
tecnologia empregada < dbexpress > por exemplo ) , qnd dispara essa exceção , num post ,
num applayupdates (provavelmente) ,e se vc colocou try except nessa chamada ( no caso
do cleintdataset não adianta ) deu para entender que vc criou um trigger que ira gerar uma exceção que sera propagada para
o cliente . No cliente ao interceptar esta mensagem , tem que trata-la para aparecer de uma forma
mais amigavel . so que esta tratamento , depende da engine de acesso Numa Arquitetura DbExpress/ClientDataSet ficaria mais ou menos assim  
procedure TSeuFormOuDataModule.SeuCDSReconcileError(DataSet: TCustomClientDataSet;
  E: EReconcileError; UpdateKind: TUpdateKind; var Action: TReconcileAction);
begin
if pos('NAO_TEM_ESTOQUE',e.Message) > 0 then
      Showmessage('Não possui quantidade suficiente em estoque');
end;
  Ao dar o ApplayUpdates , caso a exceção do Triger seje gerada a mensagem será apresentada de forma amigavel

Marco Salles

Marco Salles
Responder

Gostei + 1

Mais Posts

24/07/2010

Marco Salles

tem   Mostre como vc esta fazendo
Responder

Gostei + 0

24/07/2010

Gustavo

A chamada pela triger está assim:      IF (:QTDEESTOQUE < (NEW.QTDE*:PUNISAIDA)) THEN BEGIN
            EXCEPTION "NAO_TEM_ESTOQUE";
         END ELSE BEGIN    ....    END.   e a criação da exception assim:   CREATE EXCEPTION NAO_TEM_ESTOQUE 'Não possui quantidade suficiente em estoque';   valeu pela força
Responder

Gostei + 0

24/07/2010

Marco Salles

Me referi ao codigo no delphi   Como vc esta mostrando esta mensagem ????   try excpet ???
Responder

Gostei + 0

25/07/2010

Gustavo

Não amigo, não chamo pelo Delphi. Eu criei um gatilho direto no firebird, ou seja, a chamada é feita quando tenta inserir naquela tabela, conforme postei anteriormente.
Responder

Gostei + 0

25/07/2010

Gustavo

Valeu amigo, resolvido.... Muito obrigado...
Responder

Gostei + 0

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

Aceitar