Ver Mensaje Individual
  #8  
Antiguo 24-08-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Una forma genérica de asignar maestro/detalle con la estructura que pusiste arriba seria:

Supongamos que tenés declarado
Código SQL [-]
CREATE GENERATOR G_MAESTRO;
CREATE GENERATOR G_DETALLE;

CREATE TABLE MAESTRO (
  IDMAESTRO INTEGER NOT NULL,
  FECHA_1 DATE,
  IDUSUARIO INTEGER,
  TOTAL NUMERIC(15,2),
  CONSTRAINT MAESTRO_PK PRIMARY KEY (IDMAESTRO),
);

CREATE TABLE DETALLE (
  IDDETALLE INTEGER NOT NULL,
  REFMAESTRO INTEGER NOT NULL,
  IDCLIENTE INTEGER NOT NULL,
  IDPRODUCTO INTEGER NOT NULL,
  CONSTRAINT MAESTRO_PK PRIMARY KEY (IDDETALLE),
  FOREIGN KEY(REFMAESTRO) REFERENCES MAESTRO(IDMAESTRO)
);

Triggers para generators:
Código SQL [-]
SET TERM ^;
CREATE TRIGGER MAESTRO_BI FOR MAESTRO ACTIVE BEFORE INSERT OR UPDATE
AS
BEGIN
  IF (NEW.MAESTRO_ID IS NULL) THEN
     NEW.MAESTRO_ID = GEN_ID(G_MAESTRO,1);
END^

CREATE TRIGGER DETALLE_BI FOR DETALLE ACTIVE BEFORE INSERT OR UPDATE
AS
BEGIN
  IF (NEW.DETALLE_ID IS NULL) THEN
     NEW.DETALLE_ID = GEN_ID(G_DETALLE,1);
END^
SET TERM ;^

Y esté asignado en 'MAESTRO':

Cita:
.IBDataSetMaestro -> TABLE MAESTRO
.dsMaestro -> IBDataSetMaestro
.GeneratorField -> G_MAESTRO

Y en 'DETALLE':

Cita:
.IBDataSetDetalle -> TABLE MAESTRO
.dsDetalle -> IBDataSetDetalle
.GeneratorField -> G_DETALLE

Debería funcionar si:

Cita:
.IBDataSetDetalle.SelectSQL:= 'SELECT * FROM DETALLE WHERE REFMAESTRO = :IDMAESTRO';
.IBDataSetDetalle.DataSource:= dsMaestro;

Saludos.

Última edición por ecfisa fecha: 24-08-2010 a las 18:58:06.
Responder Con Cita