Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-05-2007
Avatar de jrmanso
jrmanso jrmanso is offline
Miembro
 
Registrado: may 2007
Ubicación: Madrid
Posts: 10
Poder: 0
jrmanso Va por buen camino
commit o rollbakc en ondestroy

no tengo muy claro que es lo mejor para una transaccion si hacer commit o rollbakc en el destroy del modulo de datos o formulario.
esta claro que commit asegura cualquier actualizacion que no se hiciera antes pero tambien podria dejar la base de datos inconsistente en caso de un fallo a mitad de una actualizacion.

si alguien tiene claro este tema agradeceria su ayuda
IBDataset y delphi 7
Gracias
Responder Con Cita
  #2  
Antiguo 06-05-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
El asunto es asi:
Código Delphi [-]
begin
 DataModule1.AC1.BeginTrans;

try
// aqui todo lo que quieres hacer

end;
DataModule1.AC1.CommitTrans;

 except
 on E:Exception do DataModule1.AC1.RollbackTrans;
 end;
Esto usando un datamodule.
AC1, es el conector a la base de datos en este caso.
Saludos
Responder Con Cita
  #3  
Antiguo 06-05-2007
Avatar de jrmanso
jrmanso jrmanso is offline
Miembro
 
Registrado: may 2007
Ubicación: Madrid
Posts: 10
Poder: 0
jrmanso Va por buen camino
Gracias Caral por tu respuesta
pero mi duda no es como usar commit o rollbakc en una transaccion
quizas no he realizado bien la pregunta.
tengo un modulo de datos con su transaccion y varios IBDataset enganchados ya me preocupo de hacer los commit o rolbakc pertinentes despues de cada modificacion, insercion de datos en uno o en varios IBDataset.
He visto en varios proyectos que en el evento ondestroy de MD meten un commit supongo para confirmar datos que puedan no estarlo.

Mi duda esistencial es si es mejor meter un commit o un rollbakc en ese evento on destroy del Modulo Datos y cuales son las ventajas inconvenientes de usar uno o otro.

supongamos que estoy haciendo una actualizacion en tabla maestro y tabla detalle y tengo un error no controlado que destruye el MD
si en el evento ondestroy tengo commit puedo estar confirmando algo que me deje la BD en un estado inconsistente.
Perdon por el rollo espero que se me entienda la mala pregunta
Gracias de nuevo.
Responder Con Cita
  #4  
Antiguo 06-05-2007
TJose TJose is offline
Miembro
 
Registrado: may 2003
Posts: 162
Poder: 21
TJose Va por buen camino
Hola

En que lugar estas empezando la transacción? Es cuando creas la ventana?

Yo trabajo todo lodo lo realcionado a ABM de manera explicita, en el momento de *Aceptar*, empiezo y termino la transacción, ya sea con un commit o u rollback. Fuera del Aceptar no hago nada que tenga que ver con las transacciones.


Saludos
TJose
Responder Con Cita
  #5  
Antiguo 06-05-2007
Avatar de jrmanso
jrmanso jrmanso is offline
Miembro
 
Registrado: may 2007
Ubicación: Madrid
Posts: 10
Poder: 0
jrmanso Va por buen camino
Hola de nuevo
Gracias TJose por tu interes
Las transacciones las tengo controladas, depende del formulario, bien en el boton aceptar si trabajo con TEdit sobre varias tablas o bien en los eventos
afterpost y afterdelete si trabajo con TDBEdit sobre una tabla.

Pero la duda como planteaba antes es el evento ondestroy del Modulo de Datos aparte de como se tengan controladas las transacciones.

He visto en varios proyectos que en el evento ondestroy de MD meten un commit supongo para confirmar datos que puedan no estarlo.

Mi duda esistencial es si es mejor meter un commit o un rollbakc en ese evento on destroy del Modulo Datos y cuales son las ventajas inconvenientes de usar uno o otro.

Gracias y un saludo.
Responder Con Cita
  #6  
Antiguo 06-05-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Me sigue pareciendo innecesario el uso ni de uno ni de otro en el modulo de datos, si la transaccion se hace en cualquier evento del programa, con un CommitTrans, se hara si los datos coincidieron ect, y con un RollbackTrans, dejara la tabla en su estado anterior al cambio sin perjudicar nada.
Veo un poco paranoico, el uso de verificacion de transacciones en el data module, cuando se destruye, no se para mi es un gasto de masa cerebral innecesario, no se, la verdad nunca lo he usado y nunca lo he necesitado, es como repetirle al programa, oye, si no se hicieron los cambios, a ver que haces antes de salir, con que tabla trabajara, con todas las que esten en el datamodule, bueno, sientate y espera un gran rato a que las confirme todas, no se, no me convence.
Humilde opinion.
Saludos
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con IBMANAGER con commit vivamotos Firebird e Interbase 0 27-09-2006 08:29:11
Commit - CommitRetaining Luzma Firebird e Interbase 3 27-06-2006 01:58:58
Commit micayael PHP 4 21-09-2005 19:34:50
Commit Loviedo Firebird e Interbase 7 29-07-2005 14:36:10
Commit Work?? anam.soria Firebird e Interbase 3 31-01-2005 19:17:14


La franja horaria es GMT +2. Ahora son las 00:17:18.


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