Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-03-2009
Avatar de peccatum
peccatum peccatum is offline
Miembro
 
Registrado: oct 2005
Posts: 89
Poder: 19
peccatum Va por buen camino
Transacción maestro-detalle con Zeos y SQLite

Estimada comunidad,

Estoy tratando de implementar una función en Delphi (utilizando Zeos y una DB SQLite-3) que inserte en la base de datos un encabezado en una tabla y un conjunto de lineas de detalle, y quiero que estas operaciones estén dentro de una transacción de modo que se cargue todo o nada. Lo he encarado de la siguiente forma pero no esta funcionando:

Código Delphi [-]
 
ZConnection1.StartTransaction;
       try
       
       ZQMovs.Post;
        InsMD(ZQMovsId_int_movimiento.AsInteger);
        umain.FMain.ZConnection1.Commit;
        
       except

        ZConnection1.rollback;
        raise;

       end;

ZQMovs sería el encabezado, y el procedimiento InsMD lo que hace es recorrer un memory data y va insertando todos sus registros que serían el detalle de ZQMovs.

De esta forma no me está funcionando ya que si algo sucede mal en la función InsMD el encabezado y las lineas anteriores me las guarda, y no quiero que eso suceda....

¿Sugerencias de cómo implementar esto?

Por si hace falta, el cuerpo del procedimiento que carga las lineas luce de ésta forma:

Código Delphi [-]
 try

                 while not MTMov_Det.Eof do
                 begin

                             ZQAdmDet.Append;

                             ZQAdmDetId_Int_Movimiento.AsInteger := det;
                             ZQAdmDetId_Articulo.AsString :=
                               MTMov_DetID_Articulo.AsString;
                             ZQAdmDetCantidad.AsFloat :=
                               MTMov_DetCantidad.AsFloat;
                             ZQAdmDetId_Destino.AsInteger := 1;

                             ZQAdmDet.Post;
                                

                 end;



            except

              

               raise;

            end;

Saludos
Responder Con Cita
  #2  
Antiguo 31-03-2009
Avatar de peccatum
peccatum peccatum is offline
Miembro
 
Registrado: oct 2005
Posts: 89
Poder: 19
peccatum Va por buen camino
cri cri cri
Responder Con Cita
  #3  
Antiguo 03-04-2009
Avatar de peccatum
peccatum peccatum is offline
Miembro
 
Registrado: oct 2005
Posts: 89
Poder: 19
peccatum Va por buen camino
0123456789
Responder Con Cita
  #4  
Antiguo 04-04-2009
Avatar de peccatum
peccatum peccatum is offline
Miembro
 
Registrado: oct 2005
Posts: 89
Poder: 19
peccatum Va por buen camino
La solución a este problema la encontré en este hilo:

http://www.clubdelphi.com/foros/showthread.php?t=63819

como hay que transpirar con sqlite, implementar integridad referencial y ahora esto...

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
Saber si el DBGrid (Detalle) esta Vacio en Relacion Maestro/Detalle Adrian Murua Conexión con bases de datos 2 03-01-2009 13:48:46
Maestro-Detalle de tres niveles con ZEOS JCarlosas MySQL 4 03-04-2007 00:45:50
Crear DB SQlite con Zeos userlazarus Conexión con bases de datos 3 03-09-2006 09:08:01
SQLite con Zeos Controls bitbow Tablas planas 1 11-08-2006 17:58:39
maestro-detalle con zeos source_code MySQL 0 19-01-2005 18:04:58


La franja horaria es GMT +2. Ahora son las 22:53: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