Estimados:
En esta versión tambien tengo el error de mesas de examenes.s.
Se da de alta una mesa de examen y posteriormente se quiere inscribir a los estudiantes dice que no hay mesas disponibles para el alumno.
Gracias, saludos, Emilio.
Estimados:
En esta versión tambien tengo el error de mesas de examenes.s.
Se da de alta una mesa de examen y posteriormente se quiere inscribir a los estudiantes dice que no hay mesas disponibles para el alumno.
Gracias, saludos, Emilio.
Emilio, corroboraste que:
Todo está chequeado, se hicieron todos los pasos.
Gracias!!!
Chequeaste el NIvel que tiene definido el llamado?
ana
Hola, hay dos posibilidades más:
Ir al plan de estudios, seleccionar la actividad y en las características chequear si la materia está habilitada para Rendir Examen.
Ir al ABM de Actividades, buscar la materia y fijarse si está “Disponible para: Todas las operaciones”.
Los dos puntos estan verificados y no tenemos inconcistencia con las recomendaciones.
Gracias
Hola
Si es una instalación que trabajes solo y tengas acceso a los logs, hace lo siguiente.
Ejecutá el guarani hasta que te aparezca el mensaje que no existen mesas. Ni siquiera clickees en aceptar
En ese momento abrí los log y fijate las consultas que hizo. Alguna de las últimas debería no devolverte registros y saldrá cual es la condicion que hace no devolver filas.
Emilio Luque
¿Cual es la versión del sistema? Como empezas diciendo “En esta version también…”. Tal vez lo dijiste en otro mensaje en este foro.
Perdon por no aclarar. Acabo de migrar de la 3.0.0(5) a la 3.4.1. Gracias
Estimados, adjunto el log con la operacion. Desde ya agradezco colaboracion. Saludos, Emilio
log.txt (13.1 KB)
Tomá el select de las mesas de examen y ejecutalo en postgres
Supuestamente no te debería devolver nada.
Empezá a comentar las lineas del where en la cual pasas datos de a una.
fijate en cual de ellas te devuelve algo.
Si no logras que te devuelva algo, empezá a comentar los join a ver que pasa.
Por suerte no son tantos.
Emilio
Emilio:
Por lo que vi el scrip tira error al invocar la funcion “f_mesas_vigentes_una_actividad”
ERROR: function f_mesas_vigentes_una_actividad(unknown, unknown, unknown, unknown, boolean, unknown) does not exist
Llendo de abajo hacia arriba, eliminando los AND y por ultimo el WHERE todas las condiciones me trajieron resultados. Gracfias, Emilio
Hola
Existe esa función en la base de datos?
no tendrás un problema de casting en la instalación del postgresql?
No se…, como me doy cuenta…?, que tengo que hacer para solucionarlo…? Gracias
Por lo que me comentas si…
ERROR: function f_modalidad_cursada_examen(integer) does not exist
LINE 11: f_modalidad_…
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
ERROR: function f_modalidad_cursada_examen(integer) does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Character: 1039
Hola Emilio!
Por lo que veo en el log de Toba que adjuntaste no se está generando ningún error con las funciones en la sql, con lo cual existen en la base y están bien definidas. De otra forma, si hubiese algún error con los argumentos, tipos o existencia de: f_modalidad_cursada_examen o de f_mesas_vigentes_una_actividad, quedaría registrado ese error de postgresql capturado por Toba en el log. Supongo que lo otro que mencionás debe ser algún tema de configuración de la herramienta que estás utilizando para probar las consultas (pgadmin o alguna otra).
Lo que se ve en el log es que se captura el error de sistema “No hay mesas disponibles para el alumno y actividad seleccionados”, excepción que se genera cuando la sql no retorna datos.
Como bien dice Emilio Luque la opción más fácil para que detectes qué condición es la que te está faltando, es ir comentando los filtros del where.
La sql concreta que está ejecutando en tu instalación en el ejemplo que enviás es:
SELECT sga_mesas_examen.mesa_examen,
sga_mesas_examen.nombre as mesa_nombre,
sga_llamados_mesa.entidad,
sga_llamados_mesa.llamado_mesa,
sga_periodos_llamado.nombre as llamado_nombre,
sga_llamados_mesa.fecha,
to_char(sga_llamados_mesa.fecha,‘DD/MM/YYYY’) || ’ ’ || to_char(cast(sga_llamados_mesa.hora_inicio as time), ‘HH24:MI’) as fecha_visual,
COALESCE(sga_catedras.nombre, ’ ') as catedra_nombre,
sga_mesas_examen.ubicacion,
sga_ubicaciones.nombre as ubicacion_nombre,
f_modalidad_cursada_examen(sga_mesas_examen.mesa_examen) as modalidad_nombre,
sga_periodos_llamado.anio_academico,
sga_llamados_turno.turno_examen,
sga_periodos_llamado.anio_academico || ’ - ’ || periodos_turnos_examen.nombre as turno_examen_nombre,
(SELECT count(*) FROM sga_docentes_mesa_llamado WHERE sga_docentes_mesa_llamado.llamado_mesa = sga_llamados_mesa.llamado_mesa) as docentes_cant
FROM sga_mesas_examen
LEFT JOIN sga_catedras ON sga_catedras.catedra = sga_mesas_examen.catedra,
sga_ubicaciones,
sga_llamados_mesa,
sga_llamados_turno,
sga_periodos as sga_periodos_llamado,
sga_turnos_examen,
sga_periodos as periodos_turnos_examen
WHERE sga_mesas_examen.mesa_examen = sga_llamados_mesa.mesa_examen
AND sga_ubicaciones.ubicacion = sga_mesas_examen.ubicacion
AND sga_mesas_examen.elemento = '3'
AND sga_llamados_turno.llamado = sga_llamados_mesa.llamado
AND sga_periodos_llamado.periodo = sga_llamados_turno.periodo
AND sga_turnos_examen.turno_examen = sga_llamados_turno.turno_examen
AND sga_turnos_examen.periodo = periodos_turnos_examen.periodo
AND sga_llamados_mesa.fecha >= CURRENT_DATE
AND sga_llamados_mesa.llamado_mesa IN (SELECT * FROM f_mesas_vigentes_una_actividad('3', '1', '2', '2', true, '1'))
ORDER BY
sga_periodos_llamado.anio_academico DESC,
sga_llamados_turno.turno_examen ASC,
sga_llamados_mesa.fecha DESC,
sga_llamados_mesa.hora_inicio DESC
En concreto, si ya verificaste las condiciones que mencionó Alejandro, la ejecución de esta función con los parámetros dados:
SELECT * FROM f_mesas_vigentes_una_actividad(‘3’, ‘1’, ‘2’, ‘2’, true, ‘1’)
debería retornarte un conjunto de datos no vacío…esto es así?
Espero que te sirva de ayuda.
Saludos! Gabi.
Estimados:
La unica forma que encuentro de ejecutar el SELECT es comentando las lineas que tienen las funciones. De esta manera todas las condiciones arrojan resultados, juntas o individualmente:
f_modalidad_cursada_examen
ERROR: function f_modalidad_cursada_examen(integer) does not exist
LINE 11: f_modalidad…
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
********** Error **********
sga_llamados_mesa.llamado_mesa
ERROR: function f_mesas_vigentes_una_actividad(unknown, unknown, unknown, unknown, boolean, unknown) does not exist
LINE 35: …sga_llamados_mesa.llamado_mesa IN (SELECT * FROM f_mesas_vi…
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
********** Error **********
Estoy utilizando pgAdmin3 y las funciones las tengo en la base de datos.
Ejecutandolo desde psql arroja el mismo error:
psql -d g3p -f selectError.sql
psql:selectError.sql:41: ERROR: function f_modalidad_cursada_examen(integer) does not exist
LINE 11: f_modalidad…
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
Alguna forma alternativa de realizar la tarea. Estoy apremiado con las necesidades operativas.
Gracias
Hola
Supongo que verificastes la existencia de las funciones.
Si están correctamente creadas fijate si esto
http://foro.comunidad.siu.edu.ar/index.php?topic=2088.0
te resuelve el problema.
Emilio
Estimado Emilio:
No me doy cuenta entre que tengo que hacer el cast…, por lo que veo solo interviene una variable integer…, asi que no se como hacerlo…, no me doy cuenta…
Gracias
CREATE OR REPLACE FUNCTION f_modalidad_cursada_examen(integer)
STRICT IMMUTABLE LANGUAGE SQL AS 'SELECT
???
[b]int4($1::text);';
CREATE CAST (integer AS integer) WITH FUNCTION
f_modalidad_cursada_examen(integer) AS IMPLICIT;[/b]
CREATE OR REPLACE FUNCTION pg_catalog.varchartoint(character varying) RETURNS integer
STRICT IMMUTABLE LANGUAGE SQL AS ‘SELECT
int4($1::text);’;
luego tu funcion utilizará el cast definido en la última.
Recopilemos un poco.
la funcion
SELECT * FROM f_mesas_vigentes_una_actividad(‘3’, ‘1’, ‘2’, ‘2’, true, ‘1’))
no anda. Es así?
Probá
SELECT * FROM f_mesas_vigentes_una_actividad(3, 1, 2, 2, true, 1)
a ver si funciona.
si la segunda devuelve algo pero la primera no, es un problema de cast. Ejecutando las dos funciones debería resolverse
Si no es un tema de datos.
O sea…
Si tenes un problema de cast yo te recomendaría que hagas un backup de la base de datos y reinstales el postgres con los cast habilitados. No que sigas con estos parches.
Emilio