Hola Buen dia, les escribo porque estoy teniendo inconvenientes para obtener los datos de alumnos y planes de estudio. al Ejecutar el script 4 y luego de ejecutar la siguiente consulta:
select * from f_int_alumnos_plan_progresar(AÑO);
no obtengo datos para ningun año academico (dejo adjunto la imagen).
Revisando el script3 me di cuenta que las clausulas for no tienen un LOOP END, por ej , en este fragmento de código:
– +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
– Devuelvo el archivo de alumnos
– +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
_datos := ‘**************** Inicio archivo alumnos.txt *****************’;
RETURN NEXT _datos;
– Recupero una vez cada persona (por si esta informado mas de una vez en el archivo)
– Lo informo por cada titulo araucano que viene en el archivo a informar.
FOR _alu IN
SELECT DISTINCT
CASE tipo_documento
WHEN ‘DNI’ THEN 0
WHEN ‘DNT’ THEN 1
WHEN ‘CI’ THEN 2
WHEN ‘LE’ THEN 18
WHEN ‘LC’ THEN 19
WHEN ‘PAS’ THEN 90
END as tipo_documento,
numero_documento,
cast(trim(codigo_titulo_araucano) as integer) as codigo_titulo_araucano,
cast(trim(codigo_facultad) as integer) as codigo_facultad
FROM int_progresar
ORDER BY numero_documento
LOOP
– Datos del alumno a informar
FOR _arch2 IN
– Titulos Araucano por los que va a informar…
– Por el que viene informado desde el ministerio y si no viene titulo se informa por todos
– en los que se encuentre el alumno.
SELECT
…
En el INT se incluye esa consulta con el case y todo lo que sigue, pero después del loop no hay ninguna sentencia y tampoco se cierra el loop, continua con otro for (_arch2) y pasa exactamente lo mismo. El script 3 no me tira ningún error cuando lo ejecuto, pero para mi tiene que haber algún error que hace que la función no se ejecute de forma correcta y por eso no obtengo ningún dato. Me podrán ayudar?
No, esta bien me equivoque yo, son todos for anidados los loop end estan al final del archivo. Mas alla de que el script este bien, no entiendo porque no me devuelve ningun dato. Lo único que tuve que corregir del script son los esquemas, voy a seguir revisando…
Los alumnos a informar estan en la tabla int_progresar ?
Si hay datos, pudiste correr esas querys de los FOR anidados (_alu y _arch2) y verificar si recuperan alumnos?
Una de las condiciones es que la propuesta por la uqe se informa el alumno tenga asignado un titulo de nivel “FINAL” y ademas que tenga definido el codigo de titulo Araucano y se corresponda con el codigo de titulo araucano que viene informado en el archivo con los datos del alumno y que son los que se importan en el paso 1. ¿Podes verificar esto?
Hola Alejandro buenas tardes, te comento… los datos de los alumnos se cargaron bien en la tabla int progresar con su correpondiente código de titulo araucano. Ahora que me comentas sobre estos requisitos, voy a revisar que los códigos de titulo araucano que están en esa tabla se correspondan con lo que tengo cargado en la base. Con respecto a la otra condición, como puedo verificar que los alumnos tengan asignado ese titulo de nivel Final?
Con respecto a la otra condición, como puedo verificar que los alumnos tengan asignado ese titulo de nivel Final?
Fijate que el codigo de titulo araucano que viene informado en el alumno se encuentre registrado en el "certificado" que corresponde al titulo que el plan de estudios de ese alumno tiene asociado.
Que sea de nivel final lo ves en el certificado . Operacion [b]» PROPUESTAS FORMATIVAS » CERTIFICADOS »ADMINISTRAR CERTIFICADOS[/b]
Adjunto imagen.
Si el certificado (titulo) que asignaron al plan de estudio del alumno no esta configurado como de nivel final, lo que pueden hacer es editar este proceso que genera la información para Becas y comentar el filtro siguiente:
Hola Alejandro, te quería avisar que a pesar de haber corregido el tema de los títulos de nivel final y los del araucano , la query sigue sin devolver nada. Como alternativa, quería consultarles si hay alguna consulta que pueda resolver los siguientes datos que necesitamos:
Para cada estudiante:
año de ingreso.
cantidad de materias aprobadas (2019,2020 y 2021).
nombre de las materias aprobadas en el 2021.
si es alumno regular o no.
Fecha de curso de ingreso.
Rodrigo, hace lo siguiente:
Editen la funcion “f_int_alumnos_plan_progresar” de la base de datos, y saquen o comenten la siguiente condición:
AND c.titulo_nivel = 'FINAL'
AND c.titulo_araucano IS NOT NULL
AND ((_alu.codigo_titulo_araucano IS NOT NULL AND c.titulo_araucano = _alu.codigo_titulo_araucano) OR
(_alu.codigo_titulo_araucano IS NULL AND
_alu.codigo_facultad IN (SELECT sra.institucion_araucano
FROM sga_propuestas_ra as pra, sga_responsables_academicas as sra
WHERE pra.propuesta = alu.propuesta
AND sra.responsable_academica = pra.responsable_academica
AND sra.institucion_araucano IS NOT NULL
)
)
)
Fijate si sacando eso, la ejecución de esta función informa los datos por cada alumno que hayan subido a la tabla int_progresar
acabo de comentar ese código y sigue pasando lo mismo. No se que podrá ser… lo único que se me ocurre es que tengamos datos erróneos o nulos en nuestra base y por eso la función no trae la info… pero es raro… voy a seguir revisando.
Rodrigo, podes ejecutar cada query de esa función y ver donde no recupera datos?
Esta consulta devuelve a los alumnos si lo vas buscando de a uno?
SELECT *
FROM mdp_personas_documentos as d
JOIN mdp_personas as p ON p.documento_principal = d.documento
JOIN sga_alumnos as alu ON alu.persona = p.persona
JOIN sga_propuestas as prop ON prop.propuesta = alu.propuesta
JOIN sga_planes_versiones as pv ON pv.plan_version = alu.plan_version
JOIN sga_planes ON sga_planes.plan = pv.plan
JOIN sga_planes_certificados as pc ON pc.plan_version = alu.plan_version
JOIN sga_certificados as c ON c.certificado = pc.certificado
JOIN sga_propuestas_aspira as pa ON pa.propuesta = alu.propuesta AND pa.persona = alu.persona
JOIN sga_situacion_aspirante as sa ON sa.situacion_asp = pa.situacion_asp
WHERE d.tipo_documento = 0 -- DNI
AND d.nro_documento = '31526525'
AND sa.resultado_asp IN ('P','A')
Hola Alejandro buen dia, ejecute esa query y pude obtener los datos de los alumnos asi que voy a ir agregando todos los dni a esa query y lo hago de esa forma. Te molesto con lo ultimo, esa query no devuelve la cantidad de materias que tiene aprobado el estudiante y si aprobo alguna materia en el 2021, hay alguna manera de obtener esa info?
Rodrigo, en la función f_int_alumnos_plan_progresar esta la query que por cada alumno se ejecuta para sacar los datos que se necesitan.
Pero, si la tabla int_progresar tiene los datos de los alumnos que hay que informar, ejecuta la siguiente consulta y fijate si con los datos de TIPO y NUMERO DE DOCUMENTO encontras alumnos en la consulta que te pase en el mensaje anterior:
SELECT DISTINCT
CASE tipo_documento
WHEN ‘DNI’ THEN 0
WHEN ‘DNT’ THEN 1
WHEN ‘CI’ THEN 2
WHEN ‘LE’ THEN 18
WHEN ‘LC’ THEN 19
WHEN ‘PAS’ THEN 90
END as tipo_documento,
numero_documento,
cast(trim(codigo_titulo_araucano) as integer) as codigo_titulo_araucano,
cast(trim(codigo_facultad) as integer) as codigo_facultad
FROM int_progresar
ORDER BY numero_documento