Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 13-04-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Una excepción busca el del try except más cercano, si no tienes ninguno en
tu aplicación, se genera el evento Application.OnException (delphi 6 o
superior, componente TapplicationEvents, si mal no recuerdo), Si tampoco
tienes código en ese evento, o no la cancelas la excepción, entonces
aparece el mensaje en pantalla, y casi siempre en inglés.

Tu caso particular es complejo, pero es simple la solución:
Tal como lo comentas, las llamadas en cascada se pueden producir así:

Aumentar_Orden
Cambiar_Lote,
Cambiar_Grupo,
Cambiar_Caja

Código Delphi [-]
procedure aumentar_Orden
begin
try
   transaccion1.StartTransaction...
except 
   mensajepersonalizado al usuario.
    transaccion1.rollback;
end
end;

procedure Cambiar_Lote
begin
try
   transaccion2.StartTransaction...
except 
  mensaje personalizado  
  transaccion2.rollback;
  raise; // con esto re- lanzamos la excepción 
// y hacemos que tambien se produzca una excepción 
// en Aumentar_Caja (el nivel superior)
// por tanto la transacción 1 tambien hace un rollback
end
end;

procedure Cambiar_Grupo
begin
  if valorBooleano then 
    Cambiar_Caja
end;

procedure Cambiar_Caja
begin
try
   transaccion4.StartTransaction...
except 
  mensaje personalizado  
  transaccion4.rollback;
  raise; // con esto re- lanzamos la excepción 
// y hacemos que tambien se produzca una excepción 
// en Cambiar_Grupo, como en ese procedimiento no hay
// ningun try .. except, saltará al nivel superior, o sea a 
// Cambiar_lote, useasé, todo queda controlado.
end
end;

Es decir, el programa iría de arriba de este código, hacia abajo, pero cuando
se produce la excepción, hace lo que hay en el try except, y al estar la
palabra reservada raise;, el código se empieza a ejecutar hacia arriba,
entrando en todas las cláusulas except y deshaciendo todos los
cambios hechos en la base de datos.

Un saludo, y espero se entienda.
__________________
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: 13-04-2005 a las 19:18:14.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 06:05:29.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi