Exception Firebird
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.
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
Curtidas 0
Melhor post
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
Ao dar o ApplayUpdates , caso a exceção do Triger seje gerada a mensagem será apresentada de forma
amigavel
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;
GOSTEI 1
Mais Respostas
Marco Salles
24/07/2010
tem
Mostre como vc esta fazendo
GOSTEI 0
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
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
24/07/2010
Me referi ao codigo no delphi
Como vc esta mostrando esta mensagem ????
try
excpet ???
GOSTEI 0
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
24/07/2010
Valeu amigo, resolvido.... Muito obrigado...
GOSTEI 0