Ver Mensaje Individual
  #2  
Antiguo 26-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
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 ebeltete.

Declarar la relación en la creación de la tabla sería algo como:
Código SQL [-]
CREATE TABLE DETALLE(
   DETALLE_ID INTEGER DEFAULT 1 NOT NULL,
   CAMPO1 CHAR(6) NOT NULL,
   CAMPO2 VARCHAR(30) NOT NULL,
   ...
   REFMAESTRO INTEGER NOT NULL,
   CONSTRAINT DETALLE_PK PRIMARY KEY(DETALLE_ID),
   FOREIGN KEY(REFMAESTRO) REFERENCES MAESTRO(MAESTRO_ID) 
     ON DELETE SET NULL 
     ON UPDATE CASCADE  /* acciones referenciales (pueden omitirse) */ 
);
Estas son las acciones referenciales:
NO ACTION: No hará nada.
CASCADE : Realizará la misma acción en las tablas relacionadas.
SET NULL : Pondrá NULL en las columnas de las tablas relacionadas.
SET DEFAULT : Pondrá el valor definido por defecto en las columnas de las tablas relacionadas.

Ahora desde Delphi, un ejemplo con los componentes IBX.
Teniendo dos TIBDataSet , llamemoslos: tbMaestro y tbDetalle, los cuáles tienen sus respectivos TDataSources: dsMaestro y dsDetalle.
Los cambios se harán sobre tbDetalle y son:
A la propiedad DataSource de tbDetalle tenés que asignarle dsMaestro y en su propiedad SelectSQL, algo como:
Código SQL [-]
SELECT * FROM DETALLE
WHERE REFMAESTRO = :MAESTRO_ID
Los nombres de tabla y campos deberás cambiarlos por los que vos pusiste.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 26-05-2011 a las 13:47:11. Razón: CORRECCION: en código SQL.
Responder Con Cita