Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Bases de datos > MySQL
Register FAQ Members List Calendar Guía de estilo Today's Posts

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 26/01/2009
jrperezt jrperezt is offline
Registrado
 
Join Date: Sep 2006
Posts: 7
Poder: 0
jrperezt Va por buen camino
Uso de TZQuery y TZUpdateSQL

Estimados.

Estoy comenzando con MySql 5.1 y Zeosdbo 6.6.4, con Delphi2005.

Tengo MiQuery que hereda de TZQuery, con la propiedad CachedUpdates=True, le tengo asociada MiUpdQuery que hereda de TZUpdateSQL, con sus correspondientes metodos DeleteSql, InsertSQL y ModifySQL.

En el botón "Grabar" tengo el siguiente código:

MiQuery.Post;
if MiQuery.UpdatesPending then
MiQuery.ApplyUpdates;
MiQuery.CommitUpdates;

Pues bién, inserto y modifico correctamente, pero al salir de la aplicación y volver a entrar, los cambios se han perdido, no se ha guardado nada.

¿Que estoy haciendo mal?.

Muchisimas gracias de antemano.
Reply With Quote
  #2  
Old 27/01/2009
jrperezt jrperezt is offline
Registrado
 
Join Date: Sep 2006
Posts: 7
Poder: 0
jrperezt Va por buen camino
Me respondo a mi mismo.

Pues, resulta que el problema estaba en el componente de conexion, ya que la propiedad AutoCommit, estaba a false, la he puesto a True y ha funcionado, y parace que el CommitUpdates no hace falta, es decir el código del botón "Grabar" lo he dejado de la siguiente manera:

MiQuery.Post;
if MiQuery.UpdatesPending then
MiQuery.ApplyUpdates;

Ahora se me presenta la siguiente duda:

Con el AutoCommit=True; en el componente de conexión, si actualizo varias tablas en un transacción y una de ellas falla, cuando haga Rollback, ¿Que pasa con las tablas ya actualidas en al misma transacción?.

En cuanto pueda probar esto, os comento los resultados.
Reply With Quote
  #3  
Old 27/01/2009
jrperezt jrperezt is offline
Registrado
 
Join Date: Sep 2006
Posts: 7
Poder: 0
jrperezt Va por buen camino
Pues no hace Rollback correctamente.

Tengo el siguiente código:

Code:
    if not DMConexionDB.ZConnection.InTransaction then
        DMConexionDB.ZConnection.StartTransaction;
    try
      Post;
      if TZQuery(Dataset).UpdatesPending then
          TZQuery(Dataset).ApplyUpdates;

      ProcedimientoConError; // Este procedimiento da un error forzado

      DMConexionDB.ZConnection.Commit;
      Result := True;
    except
      DMConexionDB.ZConnection.Rollback;
      Result := False;
      raise;
    end; // Try/Except
Los cambios que se fijan en TZQuery(Dataset).ApplyUpdates, no se deshacen con el Rollback.


¿Que puede estar pasando?.
Reply With Quote
  #4  
Old 02/02/2009
gasparsi's Avatar
gasparsi gasparsi is offline
Miembro
 
Join Date: Nov 2006
Location: Salina Cruz, Oax. Mex.
Posts: 27
Poder: 0
gasparsi Va por buen camino
tal vez debes comensar con BEGIN

Cito lo que leí acerca de los RollBack:

"Los pasos para usar transacciones en MySQL son:

* Iniciar una transacción con el uso de la sentencia BEGIN.
* Actualizar, insertar o eliminar registros en la base de datos.
* Si se quieren los cambios a la base de datos, completar la transacción con el uso de la sentencia COMMIT. Únicamente cuando se procesa un COMMIT los cambios hechos por las consultas serán permanentes.
* Si sucede algún problema, podemos hacer uso de la sentencia ROLLBACK para cancelar los cambios que han sido realizados por las consultas que han sido ejecutadas hasta el momento."

fuente: http://www.webtaller.com/construccio...es-mysql-2.php
Reply With Quote
  #5  
Old 03/02/2009
jrperezt jrperezt is offline
Registrado
 
Join Date: Sep 2006
Posts: 7
Poder: 0
jrperezt Va por buen camino
Hola gasparsi.

Gracias por el consejo, pero la implementación del BEGIN es lo que intento hacer en el siguiente código:
Code:
if not DMConexionDB.ZConnection.InTransaction then
   DMConexionDB.ZConnection.StartTransaction; // Esto sería el begin
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Ayuda por favor: TZQuery + TClientDataSet = Error. juanblack Conexión con bases de datos 2 23/09/2008 20:46
Problemas con pasar parametros con TZquery Coco_jac Varios 2 18/04/2006 15:12


All times are GMT +2. The time now is 01:52.


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