Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-07-2011
Avatar de PabloTech
PabloTech PabloTech is offline
Miembro
 
Registrado: ene 2007
Ubicación: Tucumán, Argentina
Posts: 82
Poder: 18
PabloTech Va por buen camino
Red face Transacciones en Lazarus

Hola gente...

Les comento como tengo organizada mi aplicación y después cuál es mi problema.

Tengo un formulario principal que se encarga de abrir la conexión de la BD y de llamar a las otras ventanas para hacer las distintas operaciones. Además tengo un módulo de datos con los siguientes componentes:

*Un TODBCConnection,
*Un TSQLTransaction para transacciones de lectura y otro
*TSQLTransaction para transacciones de escritura.

Para las transacciones de lectura no tengo problema. Porque asocio un TSQLQuery a esa transacción y todos los SELECT funcionan casi de maravilla. Digo casi de maravilla porque hay algunas cosillas no puede hacer funciona pero no vienen al caso en este momento.

Los problemas se me presentan cuando quiero agrupar varias sentencias SQL en una sola transacción; y, si ocurriera algún error poder hacer vuelta atrás. Lo hice muchas veces en Delphi pero Lazarus no lo puedo hacer. mmm...

Quiero hacer algo como lo que sigue:
Código Delphi [-]
  TransWrite.StartTransaction;
  try
    SQL.Text := 'INSERT INTO tabla_A (col1, col2) VALUES (1, 1)';
    ExecSQL;
    SQL.Text := 'UPDATE tabla_B SET col1 = 1 WHERE cond = 1';
    ExecSQL;
    TransWrite.Commit;
  except
    on e: Exception do
    begin
      TransWrite.Rollback;
      Application.MessageBox(PChar('Error: ' + e.Message), 'Error', MB_ICONERROR);
    end;
  end;

Quiero pensar que se puede hacer así es que si alguin lo logró me cuenta... =D
__________________
Cita:
Cuando respetes al ilustrado y al ignorante, al rico y al pobre, al bello y al feo, estarás muy cerca de la sabiduría, que trasciende lo aparente.

E. Rharo
Responder Con Cita
  #2  
Antiguo 15-07-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Así no funciona?
Responder Con Cita
  #3  
Antiguo 17-07-2011
Avatar de PabloTech
PabloTech PabloTech is offline
Miembro
 
Registrado: ene 2007
Ubicación: Tucumán, Argentina
Posts: 82
Poder: 18
PabloTech Va por buen camino
Smile ¿Lazarus está incompleto?

Lamentablemente, así no funciona. Si ejecuto una sentencia sql con error durante la transacción, se invoca el rollback y termina la transacción; pero, no se hace una vuelta atrás de las sentencias que se ejecutaron hasta ese momento; sino que, quedan confirmadas. Quiero acotar que la base de datos está en Access. ¿Es posible que la programación de Lazarus esté incompleta? Es importante conocer este detalle, porque en este caso, es probable que genere muchas inconsistencias en producción; y sea muy difícil su mantenimiento. No quisiera migrar a otro motor de BD pues el sistema es sencillo.
__________________
Cita:
Cuando respetes al ilustrado y al ignorante, al rico y al pobre, al bello y al feo, estarás muy cerca de la sabiduría, que trasciende lo aparente.

E. Rharo
Responder Con Cita
  #4  
Antiguo 17-07-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Puede que el componente query que estás usando tengo una propiedad "autocommittransaction" o algo así, algunos lo traen, y seguramente está activo.
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
Las transacciones y yo gario Conexión con bases de datos 5 16-03-2009 17:23:13
[Lazarus] GTK+-devel en SUSE. problema instalar lazarus de esa libreria. sakuragi Lazarus, FreePascal, Kylix, etc. 3 28-09-2006 03:31:09
Transacciones radiohead Conexión con bases de datos 2 16-11-2004 09:29:50
transacciones Alessan SQL 5 20-09-2004 17:23:58


La franja horaria es GMT +2. Ahora son las 05:27:16.


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