Exception Firebird

Delphi

24/07/2010

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

Curtidas 0

Melhor post

Marco Salles

Marco Salles

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
GOSTEI 1

Mais Respostas

Marco Salles

Marco Salles

24/07/2010

tem   Mostre como vc esta fazendo
GOSTEI 0
Gustavo

Gustavo

24/07/2010

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
GOSTEI 0
Marco Salles

Marco Salles

24/07/2010

Me referi ao codigo no delphi   Como vc esta mostrando esta mensagem ????   try excpet ???
GOSTEI 0
Gustavo

Gustavo

24/07/2010

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.
GOSTEI 0
Gustavo

Gustavo

24/07/2010

Valeu amigo, resolvido.... Muito obrigado...
GOSTEI 0
POSTAR