Ver Mensaje Individual
  #9  
Antiguo 23-02-2008
zuncopop zuncopop is offline
Registrado
 
Registrado: feb 2008
Posts: 6
Reputación: 0
zuncopop Va por buen camino
Un espectaculo mariano

Cita:
Empezado por jmariano Ver Mensaje
Solo decir que no es cierto que no se pueda poner dos TIBQuery en una relación maestro/detalle. Para hacerlo tenemos que construir la sentencia SQL del TIBQuery detalle con una cláusula "WHERE" donde especificamos el campo que actúa de clave ajena igualándola a un parámetro dinámico. El nombre de este parámetro debe coincidir con el nombre del campo que forma parte de la clave principal en el TIBQuery maestro y, por último, tenemos que especificar en la propiedad "DataSource" del TIBQuery detalle el "DataSource" del TIBQuery maestro.

Por ejemplo, tomemos como ejemplo la base de datos que viene por defecto con Interbase.

EMPLOYEE (Empleado)
----------
DEPT_NO
EMP_NO
FIRST_NAME
...

PHONE_LIST (Números de teléfono de un empleado)
------------
EMP_NO
LOCATION
PHONE_NO
PHONE_EXT
...

Si queremos relacionar ambos querys para mostrar los números de teléfono de un empleado determinado:

1- Definimos la consulta SQL del TIBQuery maestro, en este caso, Empleado:


Código SQL [-]
select * from EMPLOYEE





2- Asignamos a la propiedad "DataSource" del TIBQuery detalle (números de teléfono) el "DataSource" del TIBQuery maestro (empleado)


Código Delphi [-]
ibqPhoneList.DataSource := ibqEmployee.DataSource;





3- Configuramos la consulta SQL del TIBQuery detalle (números de teléfono)


Código SQL [-]
select * from PHONE_LIST where EMP_NO = :EMP_NO





(El parámetro dinámico ha de llamarse igual al campo existente en el TIBQuery maestro por el cual queremos enlazar la tabla para que lo pueda localizar, que, en este caso, se trata del número de empleado: EMP_NO).

Por último activamos el TIBQuery detalle y ya podemos ver los números de teléfono de cada empleado según nos movamos por la tabla de empleados.

Saludos!
Mariano tu respuesta fue espectacular este tema me tenia trabado hace bastante tiempo gracias por compartir
Responder Con Cita