Realizar un informe con 3 o más tablas

Hola,
Tengo tres tablas persona, Documentos y Vinculacion_laboral.
Una persona tiene muchos documentos y una persona tiene muchas vinculaciones
Necesito hacer un reporte donde muestre todas las personas con sus respectivos documentos y sus respectivas vinculaciones
Te agradezco mucho
1

1 respuesta

Respuesta
1
Hace poco, la version 9 de fox incluyo la posibilidad de poner múltiples bandas de detalle en sus reports.
Si es posible, enviarme la version de fox y en todo caso, buscaremos alguna alternativa para tu version..
Si es posible, enviame los campos que tienen los dos tablas que estarían relacionadas con la de personas..
Estoy trabajando en foxpro 7,
Estos son los campos de la tabla vinculación:
Persona numeric
Dependencia carácter
direccion_dependencia cracter
Jefe caracter
fecha_inicio date
fecha_retro date
Estos son los campos de Documento
Código numeric
Descripción carecter
Numero_hojas numeric
Debido a que me faltan algunos datos como las longitudes de los campos y eso (que es importante) lo voy a definir como ejemplo..
Otra cosa, es que me falta saber como se relaciona la tabla documento con personas así que le agregue el campo persona también a la tabla documento.
Entonces.. para ejemplo (después lo adaptas vos) hacemos así..
Personas
--------
Persona n(8)
Nombre c(100)
Vinculación
-----------
persona n(8)
Depende c(100)
Dirección c(100)
Jefe c(100)
Inicio date(8)
Retro date(8)
Documento
---------
PERSONA n(8)
Codigo n(8)
descrip c(100)
hojas n(8)
Ahora.. lo que haríamos sería lo siguiente:
Creamos una consulta sql que traiga todos los campos de vinculación y todos los de documento con un identificador de origen..
Vinculación
-----------
persona n(8)
Depende c(100)
Dirección c(100)
Jefe c(100)
Inicio date(8)
Retro date(8)
sele '1' as origen, persona, depende as dependeV, direccion as dirV, jefe as jefeV, inicio as inicioV, retro as retroV, 00000000 as codigoD, space(100) as descripD, 00000000 as hojasD from vinculacion ;
union;
sele '2' as origen, persona, space(100) as dependeV, space(100) as dirV, space(100) as jefeV, ctod("") as inicioV, ctod("") as retroV, codigo as codigoD, descrip as descripD, hojas as hojasD from documento;
into dbf miConsulta order by 1
index on persona to miConsulta
Despues faltaría relacionar la tabla de personas con la consulta..
sele personas
set rela to persona into miConsulta
set skip to miConsulta
Ahora la parte del report:
En el report haces dos grupos, el primero es por el campo personas. Persona y en ese grupo pones los datos de la tabla personas que te quieras mostrar
En el otro grupo, pones por mi consulta. Origen, así en el encabezado pones algo como "Vinculaciones" y "Documentos"
En el detalle pones los campos de mi consulta..
Ahora, tenemos que trabajar con la opción de "Print only when expression is true" "imprimir solo cuando la expresión es verdadera" de los campos del report..
Segun sea el campo pones en esa opcion miTabla.origen='1' o miTabla.origen='2' para que los campos que no corresponden a la seccion no aparezcan..
Por ejemplo en el campo "dependeV" seria miTabla.origen='1' entonces, cuando estas listando los datos que sean de documento ('2') este campo no aparece..
Bueno, espero que lo pruebes y que te funcione correctamente.
Cualquier cosa estoy a tu disposición.
Keystone - Christian
www.keystone.com.ar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas