Error al cargar datos de actividades en SCORM

Error al cargar datos de actividades en SCORM

de Javier Hernández Sánchez -
Número de respuestas: 3

Hola a todos.

He actualizado de 1.9 a 2.3.3 pasando por las diferentes versiones y todo correcto (bueno con algún problema, ya resuelto) hasta ahora.

Tengo 2 cursos en los que la mayoría de las actividades son paquetes scorm. En versionesa anteriores los datos se leían perfectamente. Al visualizar los datos con esta última versión los registros en esas actividades, pulsando en la pestaña Informes, me da un mensaje de error en el Basic report (sin traducir) y ahí se queda.

error

error/moodle/dmlreadexception

y ninguna información más. El caso es que lee de las tablas porque me da que hay 51 resultados (de 50 usuarios), pero nada más.

Al pulsar en graphic report, no sale el gráfico deforma correcta y el mensaje es "Not enough data".

error2

En la opción Interactions report el mismo error que en la primera opción.

No se si el problema está en que eran registros de la versión anterior y no los lee bien, o que no los ha convertido correctamente.

¿Alguien puede ayudarme con este problema?

Un saludo.

Promedio de valoraciones: -
En respuesta a Javier Hernández Sánchez

Re: Error al cargar datos de actividades en SCORM

de Javier Hernández Sánchez -

Hola de nuevo.

He activado el modo debug del Moodle y me ha mandado el siguiente mensaje de error:

Debug info: ORA-00918: column ambiguously defined

SELECT * FROM (SELECT DISTINCT u.id || '#' || COALESCE(st.attempt, 0) AS uniqueid, st.scormid AS scormid, st.attempt AS attempt, u.id AS userid, u.idnumber, u.firstname, u.lastname, u.picture, u.imagealt, u.email, u.email FROM m_user u LEFT JOIN m_scorm_scoes_track st ON st.userid = u.id AND st.scormid = 81 WHERE u.id IN (:o_param26,:o_param27,:o_param28,:o_param29) AND (st.userid IS NOT NULL OR st.userid IS NULL) ORDER BY uniqueid) WHERE rownum <= :o_oracle_num_rows [array ( 'o_param26' => 246, 'o_param27' => 245, 'o_param28' => 244, 'o_param29' => 2, 'o_oracle_num_rows' => 20, )]

Error code: dmlreadexception

Stack trace:

line 407 of /lib/dml/moodle_database.php: dml_read_exception thrown

line 274 of /lib/dml/oci_native_moodle_database.php: call to moodle_database->query_end()

line 1101 of /lib/dml/oci_native_moodle_database.php: call to oci_native_moodle_database->query_end()

line 348 of /mod/scorm/report/basic/report.php: call to oci_native_moodle_database->get_records_sql()

line 85 of /mod/scorm/report.php: call to scorm_basic_report->display()

¿A qué puede ser debido el error?

 

Gracias anticipadas.

En respuesta a Javier Hernández Sánchez

Re: Error al cargar datos de actividades en SCORM

de Javier Hernández Sánchez -

Bueno pues me contesto a mi mismo.

El error viene al componer la SELECT. Está añadiendo 2 veces el campo u.email

SELECT * FROM (SELECT DISTINCT u.id || '#' || COALESCE(st.attempt, 0) AS uniqueid, st.scormid AS scormid, st.attempt AS attempt, u.id AS userid, u.idnumber, u.firstname, u.lastname, u.picture, u.imagealt, u.email, u.email FROM m_user u LEFT JOIN m_scorm_scoes_track st ON st.userid = u.id AND st.scormid = 81 WHERE u.id IN (:o_param26,:o_param27,:o_param28,:o_param29) AND (st.userid IS NOT NULL OR st.userid IS NULL) ORDER BY uniqueid) WHERE rownum <= :o_oracle_num_rows [array ( 'o_param26' => 246, 'o_param27' => 245, 'o_param28' => 244, 'o_param29' => 2, 'o_oracle_num_rows' => 20, )]

El Error esta en la linea 246 of /mod/scorm/report/basic/report.php: 

$select .= 'st.scormid AS scormid, st.attempt AS attempt, ' .
'u.id AS userid, u.idnumber, u.firstname, u.lastname, u.picture, u.imagealt' . //, u.email' . JHS
get_extra_user_fields_sql($coursecontext, 'u', '', array('idnumber')) . ' ';

Por lo visto la función get_extra_user_fields_sql ya pone el campo email por lo que he comentado en la linea anterior ese campo.

Y funciona perfectamente tanto en el informe básico como en el informe de interacciones.

Un saludo.