Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-01-2009
jrperezt jrperezt is offline
Registrado
 
Registrado: 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.
Responder Con Cita
  #2  
Antiguo 27-01-2009
jrperezt jrperezt is offline
Registrado
 
Registrado: 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.
Responder Con Cita
  #3  
Antiguo 27-01-2009
jrperezt jrperezt is offline
Registrado
 
Registrado: sep 2006
Posts: 7
Poder: 0
jrperezt Va por buen camino
Pues no hace Rollback correctamente.

Tengo el siguiente código:

Código:
    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?.
Responder Con Cita
  #4  
Antiguo 02-02-2009
Avatar de gasparsi
gasparsi gasparsi is offline
Miembro
 
Registrado: nov 2006
Ubicación: 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
Responder Con Cita
  #5  
Antiguo 03-02-2009
jrperezt jrperezt is offline
Registrado
 
Registrado: 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:
Código:
if not DMConexionDB.ZConnection.InTransaction then
   DMConexionDB.ZConnection.StartTransaction; // Esto sería el begin
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
Ayuda por favor: TZQuery + TClientDataSet = Error. juanblack Conexión con bases de datos 2 23-09-2008 20:46:13
Problemas con pasar parametros con TZquery Coco_jac Varios 2 18-04-2006 15:12:57


La franja horaria es GMT +2. Ahora son las 11:14:25.


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