ApplicationEvents não pega nenhuma exceção

Delphi

11/03/2011

Bom, coloquei o ApplicationEvents no meu form principal e coloquei apenas o seguinte codigo para testes:
Showmessage(E.message); 
porém, não aconteçe nada, tentei até debugar a aplicação e nem passar por esta linha de comando.
Ronaldo Lanhellas

Ronaldo Lanhellas

Curtidas 0

Respostas

Rodrigo Mattos

Rodrigo Mattos

11/03/2011

amigo não entendi?
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

11/03/2011


  eu tenho um trigger que faz a redução do estoque de produtos, porém antes de reduzir ele verifica se tem produto no estoque ! se não tiver o produto ele faz:
raise exc_qualquer  -chama uma exceção

e estou tentando pegar esta exception com o ApplicationEvents e não consigo
GOSTEI 0
Rodrigo Mattos

Rodrigo Mattos

11/03/2011

amigo que componente de conexão você está utilizando?
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

11/03/2011

  Estou usando o TSQLCOnnection (DBX)
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

11/03/2011

  ninguem pode me ajudar??
GOSTEI 0
Marco Salles

Marco Salles

11/03/2011


  eu tenho um trigger que faz a redução do estoque de produtos, porém antes de reduzir ele verifica se tem produto no estoque ! se não tiver o produto ele faz:
raise exc_qualquer  -chama uma exceção

e estou tentando pegar esta exception com o ApplicationEvents e não consigo
  Vc so vai se comunicar com o banco dando um applyupdates   mas mesmo que vc execute um applyUpdates , se ocorrer um erro e o regitrso não poder ser salvo , o clientdataset não propaga as exceçoes   para testa programae o evento onreconcilleError do clientdataset ou tente instruçoes como   if clientdataset.applyupdates(0) > 0 then  showmessage('Houve um erro')   Pode tb utilizar o tdatasetprovider para capturar esta mensagem de erro . use o  evento onUpdateERROR do tdasetProvider      
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

11/03/2011

ta mais ... ele não pode salvar se ocorrer algum erro, então eu posso fazer assim:


if cds.ApplyUpdates(0) > 0 thenAbort; 

????
GOSTEI 0
Marco Salles

Marco Salles

11/03/2011

ta mais ... ele não pode salvar se ocorrer algum erro, então eu posso fazer assim: if cds.ApplyUpdates(0) > 0 then Abort;  ????
  .. Mas o detalhe que ele mesmo "aborta" o processo Veja se vc tiver salvando 100 Registro , se um deles tiver alguma coisa errada , ele nao commita nenhum É um processo de Transação digamos assim RAD    
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

11/03/2011


  Certo, percebi que ele não "commita" se tiver algum erro, porém percebi que você deve dar um "refresh total" (quando digo refresh total, quero dizer que você deve fechar a conexão com o banco totalmente, e abrir novamente) para que mostre os registros reais sem aquele que não foi inserido.
Já com abort ele mostra na hora os registros reais...
Ex: 
Cadastro o produto MEIA, porém da algum erro e ele não commita. 
GOSTEI 0
Marco Salles

Marco Salles

11/03/2011

Certo, percebi que ele não "commita" se tiver algum erro, porém percebi que você deve dar um "refresh total" (quando digo refresh total, quero dizer que você deve fechar a conexão com o banco totalmente, e abrir novamente) para que mostre os registros reais sem aquele que não foi inserido.
Já com abort ele mostra na hora os registros reais...
Ex: 
Cadastro o produto MEIA, porém da algum erro e ele não commita. 
 
Já com abort ele mostra na hora os registros reais...
Não . Não mostra. Ele so vai mostrar os registros reais se vc der um refresh ou um close open Pode ser que no seu codigo um abort gera uma exceção e no tratamento desta exceção incondicionalmente vc dar close open /ou Refresh o que esta lhe causando esta falsa impressão
GOSTEI 0
POSTAR