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 de davsoft
1
1
davsoft, Desarrollador con 10 años de experiencia en el area de Visual...
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]