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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-09-2005
VRO VRO is offline
Miembro
 
Registrado: abr 2004
Posts: 230
Poder: 20
VRO Va por buen camino
¿Como poner dos TIBQuery como maestro/ Detalle?

Hola , no se exactamnete si esto se puede hacer, yo lo he hechjo con 2 TIBTable, pero no consigo poner 2 TIBQuery como maestro detalle.

Lo necesito para realizar un quickreport de este tipo, en la banda detail poner lo de el query maestro y en la banda subdetail lo de la detalle , para intercalar los datos con su grupo correspondiente.

Necesito 2 TIbQuerys ya que los datos los saco de la misma tabla y dependiendo el caso , la tabla de la que saco los datos de ambos querys no es la misma para todos los casos..

Por favor si alguien puede ayudarme.
Muchas gracias.
Responder Con Cita
  #2  
Antiguo 12-09-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Creo que vas a tener que utilizar dos vistas o dos tablas temporales para solventarlo, ya que TIBQuery no tine las propiedades necesarias para hacerlo, MasterFields y MasterSource.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 12-09-2005
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

Mira como te han dicho antes el ibquery no posee la spropiedades que necesitas a menos que uses el de ib objects.

Aunqu ya no uso quickreport. pero una solucion podria ser sacar todo en una solo instruccion sql y usas un reporte de grupo en ves d eun maestro detalle yde esa manera solucionas tu problema con el quick report.

Pero por mi parte te recomiendo lo mejor qeu conozco. A menos que sea por cuestion de trabajos u obligacion que tengas que usar el quickreport te recomiendo usar fastreport que hasta los momentos es la mejor erra meistas d ereportes que conosco(y de le que he usado muchos queick, report, report builder, zreport, crystal report, rave report, etc.). ha una cosa mas a quickreport hay momentos que se el va el yoyo sin song ni ton.

Bueno pero es cuestion de gustos si lo quiere usar aqui tiene un link de donde lo puedes bajar Fast report el segusdo edit pones fastreport y te aprecen varias versiones bajate la enterprise ya que es la mejor.

Nada pierdes con probar.

Mira que no es mas inteleigente el que tiene mas conociemientos si no quien sabe escuchar a alos demas ya que tiene los del y los de los demas.

Espero te sirva de ayuda
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #4  
Antiguo 12-09-2005
VRO VRO is offline
Miembro
 
Registrado: abr 2004
Posts: 230
Poder: 20
VRO Va por buen camino
Gracias

Gracias por vuestra ayuda probaré el fastreport.

Ya te cuento haber como me va.
Responder Con Cita
  #5  
Antiguo 13-09-2005
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

Pruebalo te aseguro que te va a gustar. Aqui tienes los manuales por si los necesitas Ayuda de fast report
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #6  
Antiguo 13-09-2005
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Poder: 19
jmariano Va por buen camino
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!

Última edición por jmariano fecha: 13-09-2005 a las 23:07:22.
Responder Con Cita
  #7  
Antiguo 13-09-2005
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
creo que aqui se aclaro el punto
Cita:
Empezado por rastafarey
... una solucion podria ser sacar todo en una solo instruccion sql y usas un reporte de grupo en ves d eun maestro detalle yde esa manera solucionas tu problema con el quick report.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #8  
Antiguo 08-11-2005
Rogersito Plus Rogersito Plus is offline
Miembro
 
Registrado: oct 2005
Posts: 35
Poder: 0
Rogersito Plus Va por buen camino
Maestro --> Detalle

Soy novato en INTERBASE y Delphi...

Disculpen el cambio, ya que hablan de Maestro - Detalle; mi consulta es:

Trabajo con INTERBASE, tengo dos tablas(IBtable) una como maestro y otra como detalle...; al momento de modificar mis datos de detalle y hacer un detalle.POST aparece el error:
"Record Not Found or Changed by Another User"

Gracias por responder...
Responder Con Cita
  #9  
Antiguo 23-02-2008
zuncopop zuncopop is offline
Registrado
 
Registrado: feb 2008
Posts: 6
Poder: 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
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


La franja horaria es GMT +2. Ahora son las 12:29: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