Ver Mensaje Individual
  #7  
Antiguo 17-02-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
No hace falta comprar nada.

Pon un ApplicationsEvents en tu ventana principal. En el evento OnException, puedes programar lo que quieras. Dentro del evento haz un showmessage de E.Message

Ahora en tus rutinas tienes 3 opciones mutuamente excluyentes:

1.- No poner bloques try..excepts, de forma que al ocurrir una excepción, ésta llegue al componente ApplicationsEvents.OnException en el que has programado lo que quieras hacer.

2.- Usar bloques try ... excepts, pero permitir que dicha excepción se lance de nuevo.

Típico caso, en la rutina haces un rollback de la transacción y después en el Application.OnException muestras el mensaje al usuario:
Código Delphi [-]
procedure mirutina;
begin 

  try 
     trans.StartTransaction;
      qryRestarStocks.ExecQuery; // suponemos que eso hace lanzar una excepción en la base de datos
     trans.Commit;
  except
  begin
     trans.Rollback; // anulamos los cambios hechos;
     raise; // re-lanzamos la misma excepción para que llegue al Application.OnException
  end;

3.- Usamos bloques try ... except, pero nos comemos la excepción. No llegará al Application.OnException. No se mostrará ningún mensaje al usuario.
Código Delphi [-]
procedure mirutina;
begin 

  try 
     trans.StartTransaction;
      qryRestarStocks.ExecQuery; // suponemos que eso hace lanzar una excepción en la base de datos
     trans.Commit;
  except
  begin
     trans.Rollback; // anulamos los cambios hechos;
     // raise; Aquí la gran diferencia.
  end;

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 17-02-2008 a las 14:51:43.
Responder Con Cita