Consultas en foxpro

Necesito hacer un reporte con información de tres tablas y que esta información valla agrupada en el reporte. Empleados, faltas e incapacidades. Que en la parte de arriba valla el nombre del empleado, más abajo las faltas (1, 2, 3 olas que tenga)y más abajo incapacidades igual las que tenga, como diseñar el reporte y también como hacer la consulta con esas tres tablas, m correo es [email protected]. Gracias

1 respuesta

Respuesta
1
Si deseas usar SQL realmente para este informe debes normalizar tu base de datos, ¿por qué?, por lo que veo usas 3 tablas, la de empleados ok, pero las dos tablas incapcidades y faltas debe estar almacenado en una sola y diferenciado por un valor nada más, ¿por qué esto?, por que de la forma actual si un empleado tiene faltas pero no incapacidades el SQL relacionando 3 tablas no arrojara ningún resultado, por que uno de ellos no cumple la condición del AND,(aunque puedes usar OR o UNION, pero esto restara rendimiento a la consulta), este valor debería estar almacenado en una tercera tabla intermedia, por ejemplo: EMPLEADOS, INCIDENCIAS, TIPOINCIDENCIAS,
Incidencias= (inc_id,inc_fecha,inc_empleado,inc_tipo,inc_obs)
tipoIncidencias = (tip_id,tip_descri), en donde la tabla intermedia es incidencias  por que se relaciona con empleados y con tipoIncidencias (tip_id=inc_tipo  y emp_codigo=inc_empleado), con esto haces un SQL
select emp_nombre,inc_fecha,tip_descri,inc_obs from empleados,incidencias,tipoIncidencias where em_codigo=inc_empleado and tip_id=inc_tipo order by emp_nombre,tip_descri orde by emp_nombre,tip_descri into cursor informe
Esto creara un cursor que podemos ejempificar en la forma siguiente:
emp_nombre            inc_fecha            tip_descri     inc_obs
juan lopez               25/12/08               falta           estuvo jugando en horario lab.
juan lopez              12/01/08                incapcac.    tiene problemas psic...
jose perez              04/01/08                falta           llegada tardia
jose perez               05/01/08                 falta        llegada tardia nuevamente
jose perez                10/02/08               incapac.   problemas de vista
Como ves esta ordenado por empleado y luego por los tipos de incidencia, primero las faltas luego las incapacidades agrupadas, esto facilitara hacer el informe, para ello crear tu reporte, luego te vas a INFORME - AGRUPAR DATOS, le das en expresión primero informe. Emp_nombre y luego abajo en segundo orden informe. Tip_descri esto garantiza un subgrupo de empleados, es decir listará todos los sucesos de juan perez para luego pasar a jose perez, y también primero las faltas y luego las incapacidades o según el caso, no se si entendí tu pregunta, pero la normalización de bases de datos es muy importante, por que garantiza una vida útil larga del sistema, por ejemplo el día de mañana tu cliente quiere guardar algo más que faltas o incapcidades, por ej Defectos, no crearas una nueva tabla para alojar estos datos, simplemente agregaras un registro a tipoIncidencias con la descripción de defectos y su código sera 3 y listo, nada de reescribir código, pero si no te gusta tanto esta forma, tu solución seria usar UNION en el SQL, pero recuerda, solo puedes unir 16 SQL, si no quieres este método me avisas y te responderé, no se si entendí tu pregunta, pero si dedique mucho tiempo en encontrar una respuesta, no por que sea complicada, sino por la falta de información, tal ves detallando la estructura de tus tablas hubiera sido más fácil.
Ok. Muchas gracias por tu información la verdad es que me voy iniciando en programamcion y todavía tengo muchos errores, pero si era eso lo que necesito, voy a intentarlo así con el ejemplo que me diste. Gracias
Otra molestia me intereso la forma en que me dices que en ves de crear una tabla para incapacidades y otra para faltas crear una sola no se me puedas enviar tu correo para explicarte la estructura de las tablas. Mi correo es [email protected]
Ya te envíe el correo gracias por tu ayuda.
Si, pero debes finalizar esta pregunta, recuerda que hay mucha gente necesitado ayuda, y con varias preguntas abiertas no recibo los pedidos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas