Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-10-2006
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
Inserta Registros maestro/detalle

Hola. soy nuevo en firebird aunque he trabajo mucho en paradox tengo una duda e buscado en el foro y no encontrado una respuesta completa a mi problema. Estoy trabajando con Delphi 5 y firebir 1.5, e creado todas mis tablas con el ibexpert y los campos autoincrementales manejo con triggers y generadores y utilizo relaciones de integridad entre las tablas con llaves foranes, estoy trabajando con componentes TIBDataset con las sentecias normales de
InsertSQL := 'insert into AGENDA
(FECHA , DESCRIPCION)
values
(:FECHA, ESCRIPCION)'

ModifySQL := 'update AGENDA
set
FECHA = :FECHA,
DESCRIPCION = ESCRIPCION
where
FECHA = :OLD_FECHA'

DeleteSQL := 'delete from AGENDA
where
FECHA = :OLD_FECHA'


Mi dura esta en como insertar registros en dos tablas una que sea maestro y la otra detalle con una relacion 1 a muchos.

Gracias de antemano por la atencion
Responder Con Cita
  #2  
Antiguo 27-10-2006
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 273
Poder: 20
afxe Va por buen camino
Normalidad ante todo.

Haz el tratamiento como si de paradox se tratara, es decir: Dos tablas, inserta el registro en la tabla maestra y después los registros de la tabla detalles, normalidad.

Lo único que tienes que poner atención es en el tratamiento de las transacciones, es decir, antes de comitear los detalles asegúrate que se ha comiteado la cabecera, porque si no te saltará un error de referencia de integridad. ejemplo a "grosso modo":

Cita:
ibTransaction.StartTransaction
QryCab.Append
.....
QryCab.Post

ibTransaction.CommitRetaining

QryDet.Append;
.......
QryDet.Post;

QryDet.Append;
.........
QryDet.Post

ibTransaction.Commit;
ó

Cita:
ibTransaction.StartTransaction

QryCab.Append
.....
QryCab.Post

QryDet.Append;
.......
QryDet.Post;

QryDet.Append;
.........
QryDet.Post

ibTransaction.Commit;
Parece una tontería, pero muchas veces los programadores estamos acostumbrado a ir grabando los detalles antes de la cabecera para ir realizando operaciones de acumulados, chequeos y cuenteos que puedan afectar a los datos a grabar en la cabecera.
Responder Con Cita
  #3  
Antiguo 28-10-2006
Avatar de Hagen
Hagen Hagen is offline
Miembro
 
Registrado: ene 2004
Posts: 65
Poder: 21
Hagen Va por buen camino
Da mas detalles

Ante todo deberias explicar mejor tu situacion para poder ayudarte:

- Que campos tienen tus tablas
- Podrias poner los SQL's de ambos DataSet's
- En la tabla AGENDA veo que tienes un campo fecha, que
parece la llave primaria. O me equivoco? No veo muy
bien tener como llave primaria una fecha, ya que en
una agenda se pueden tener varias actividades el
mismo dia (fecha).
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
Problema tabla Maestro-detalle en la q la pk de t.detalle formad por 2cods de la maes akinom38 Varios 1 09-11-2007 19:27:44
Maestro-Detalle joanajj Firebird e Interbase 2 28-05-2006 22:23:42
Reporte Maestro/Detalle/Detalle de 4 Tablas jovehe Impresión 2 23-03-2005 01:25:02
Maestro-Detalle ;Actualizar detalle a partir de un DBgrid norberto_larios Conexión con bases de datos 1 11-09-2004 18:17:34
Maestro Detalle Esau Conexión con bases de datos 4 15-07-2004 23:52:17


La franja horaria es GMT +2. Ahora son las 06:50:00.


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