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 Buscar Temas de Hoy Marcar Foros Como Leídos

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


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 05:25:50.


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