Alguno tiene un script que verifique si alumnos han rendido una materia, sin cumplir las correlativas para rendir?
El problema es que en enero 2008 realizamos una migración a versión 2.5.2 y algunos controles fueron desactivados, y se activaron un tiempo despues, por lo que algunos alumnos se inscribieron y rindieron materias sin tener las correlativas.
Tengo que detectar todos estos casos, para generar una convalidacion en la facultad.
Recorra las actas de examen en ese rango de fechas que detectaste que el control estuvo desactivado
Por cada acta de examen recuperar los alumnos.
Por cada alumno correr el control de correlativas con los datos del alumno y la materia del acta de examen. Aca veras si solo lo corres para los alumnos que aprobaron el examen o los que desaprobaron tambien.
El control de correlativas es el ctr_corre_iex_fech , ya que este te permite ingresar la fecha que en este caso tendras qu eponer la fecha del examen o que figura como aprobada/desaprobada la materia.
Si el resultado te da -1 entonces ahi debieras registrar ese alumno , acta , materia como para luego poder listar y controlar caso por caso.
Ejemplo:
CREATE TABLE t_alumnos (.....);
CREATE PROCEDURE verificar_correlativas()
BEGIN
DEFINE a integer,
DEFINE b varchar(255);
FOREACH SELECT unidad_academica, .., acta, .. FROM sga_actas, sga_llamados_mesa, sga_actas_examen....
FOREACH SELECT .... INTO ... FROM sga_det_acta WHERE .... and resultado = 'A'
LET a = NULL;
LET b = NULL;
EXECUTE PROCEDURE ctr_corre_iex_fech(ua, carrera, legajo, materia, fecha) INTO a, b;
IF a = -1 THEN
-- A la fecha del examen el alumno no cumplia con las corraltivas para aprobar la materia
INSERT INTO t_alumnos (unidad_academica, carrera, legajo, materia, tipo_acta, acta, fecha, nota) VALUES ....;
END IF;
END FOREACH;
END FOREACH;
.....
END PROCEDURE;
-- verificar las correlativas
EXECUTE PROCEDURE verificar_correlativas();
-- consultar alumnos
SELECT * FROM t_alumnos;