[URG] Mat0001 - Recuperación datos carrera

Hola,

les adjunto el error que tengo al incorporar alumnos desde preinscripción (2.9.2) a gestion (2.9.3). Toma los datos de las personalizaciones pero no así los datos de la carrera. Es la unica información que devuelve. Parseo la sentencia SQL que debiera traer las carreras y no veo problema alguno.

Alguno le ha pasado lo mismo?

Saludos

Juan


datos-carrera.png

datos-carrera.png

El problema que tenes es que esta teniendo problemas al validar el codigo de la preinscripción que estas ingresando.
Podes hacer un debug en la ventana w_inscripcion_persona, funcion uof_validar_id_preinscripcion.
Fijate en la linea 39

Hola Alejandro,

ojo, me levanta toda la información menos las carreras. El resto de los datos (que vienen de la preinscripción) los veo.

Me fijé ahí y en lo relacionado con carreras, me devuelve bien la cantidad de carreras del alumno.

Saludos!

Juan

¿Pero el error que mostras en la imagen? Eso se da cuando intenta levantar los datos de la preinscripción.
Verificaste si la tabla de carreras que elije el alumno (sga_carreras_insc), el usuario con el que se conecta a la base de preinscripcion tiene permisos de select/update ?

Si, eso se da cuando intenta levantar los datos de preinscripcion. De hecho levanta todo menos la info de carreras. Me fijo el tema de los permisos, entiendo que están igual que el resto.

Intenté modificar esa parte para ver si era algún otro tema y use un DECLARE CURSOR y un SELECT directamente a la base de preinscripción. De esa manera me trae todos los datos de las carreras (por lo que intuyo que no hay problemas de permisos) pero no logro armar la estructura para que lo pueda tomar la DW de carreras. Me fijo eso que me mencionas y te aviso.

Esto terminé haciendo para traerme los datos de las carreras. En principio me las trae (la vi en el debug) pero se ve que no se como armar esa estructura (s_wr_sel_s_det) porque la DW d_carrera_aspira no muestra nada.

  	
	DECLARE inscripcion_carreras CURSOR FOR 
		SELECT id_preinscripcion, carrera, sede, estado,  periodo_inscripcio 
  			FROM sga_carreras_insc WHERE estado = 'P' and sga_carreras_insc.id_preinscripcion = :ident_preinsc[1]
  		USING sqlca_preinsc;

	OPEN inscripcion_carreras;

        IF sqlca_preinsc.SQLCode = -1 Then  
	       MessageBox("Atención!!!","Error al recuperar datos de las carreras." + char(13) + sqlca_preinsc.SQLErrText,StopSign!)
	       Return -1
        End If


               DO WHILE (sqlca_preinsc.SQLCode = 0) 
		
		FETCH inscripcion_carreras INTO :carrera, :sede, :estado, :periodo_inscripcion;

			s_wr_sel.s_det[1] = 'UNRN';
			s_wr_sel.s_det[2] = nro_inscripcion;
			s_wr_sel.s_det[3] = periodo_inscripcion;
			s_wr_sel.s_det[4] = carrera;
			s_wr_sel.s_det[5] = null;
			s_wr_sel.s_det[6] = null;
			s_wr_sel.s_det[7] = null;
			s_wr_sel.s_det[8] = null;
			s_wr_sel.s_det[9] = 'nombre de la carrera;
			s_wr_sel.s_det[10] = 'nombre de la carrera';
			s_wr_sel.s_det[11] = '';
			s_wr_sel.s_det[12] = '0';
			s_wr_sel.s_det[13] = '0';		

			uoAux.is_sede = sede
						
			// Asignar el valor de la carrera seleccionada
			Tab_1.tp[5].Event dynamic trigger ue_alta_carrera(s_wr_sel)
			
		LOOP

Si te parece Alejandro, creo un GDS y lo seguimos por ahí. No tengo mucho margen más de maniobra con este tema. Sino tengo que subirlos manualmente de Preinscripción a Gestión.

Saludos!

Juan

Ingresa una solicitud y vemos como podemos ayudarte con este tema. Ver de hacer un debug al sistema y encontrar el error.
Si te parece el Lunes proximo lo vemos. Lo seguimos por GDS. Hace referencia a este mensaje del foro.
Saludos

Hola Alejandro, al final usando el CURSOR (ajustando un poco lo que había dejado en este hilo) le encontré la vuelta para que funcionara. Si quieren les mando lo que hice como para que lo vean y verifiquen.

Gracias igual!

Saludos

Juan

¿Solucionaste el problema?
¿Que era lo que sucedía en la importación de la preinscripción?

Si, problema solucionado. Fallaba aqui:

window: w_inscripcion_persona
método: ue_insertar_datos_inscripcion

En la parte donde busca las carreras en Preinscripción, fallaba el retrieve


//otras carreras a las que se inscribe
// armo el select carreras_insc
ls_carreras_insc_sql = "SELECT carrera, sede, estado,  periodo_inscripcio FROM sga_carreras_insc WHERE estado = 'P' and unidad_academica = '" + ls_ua + "' and id_preinscripcion = " + ident_preinsc[1]

// creo la sintaxis de la dw
ls_carreras_insc = sqlca_preinsc.SyntaxFromSQL(ls_carreras_insc_sql, '', ls_errores)

// creo el ds y recupero los datos de preinscripcion
uo_ds_carreras_insc = Create using 'uo_ds'
uo_ds_carreras_insc.Create (ls_carreras_insc, ls_errores)
uo_ds_carreras_insc.SetTransObject(sqlca_preinsc)
li_cant_registros = uo_ds_carreras_insc.uof_Retrieve()

IF li_cant_registros < 0 Then
	Messagebox('Atención','Error al recuperar las carreras de preinscripción.~r~nError:' + String(SQLCA_PREINSC.sqldbcode) + ' - ' + SQLCA_PREINSC.sqlErrText,Exclamation!)
....

Siempre caía en el THEN.

Lo reemplacé por esto y ahí funcionó bien:


DECLARE inscripcion_carreras CURSOR FOR 
		SELECT carrera, sede, estado,  periodo_inscripcio 
  			FROM sga_carreras_insc WHERE sga_carreras_insc.estado = 'P' and sga_carreras_insc.id_preinscripcion = :ident_preinsc[1]
  		USING sqlca_preinsc;

	OPEN inscripcion_carreras;

	IF sqlca_preinsc.SQLCode = -1 Then  
	       MessageBox("Atención!!!","Error al recuperar datos de las carreras." + char(13) + sqlca_preinsc.SQLErrText,StopSign!)
	       Return -1
   	End If


	li_cant_registros = 0
   DO WHILE (sqlca_preinsc.SQLCode = 0) 
		
		FETCH inscripcion_carreras INTO :carrera, :sede, :estado, :periodo_inscripcion;

                        .............
                       /*codigo para determinar si el alumno está inscripto o es alumno de la carrera */
                        .............
			s_wr_sel.s_det[1] = 'UNRN';
			s_wr_sel.s_det[2] = nro_inscripcion;
			s_wr_sel.s_det[3] = periodo_inscripcion;
			s_wr_sel.s_det[4] = carrera;
			s_wr_sel.s_det[5] = '';
			s_wr_sel.s_det[6] = '';
			s_wr_sel.s_det[7] = '';
			s_wr_sel.s_det[8] = '';
			s_wr_sel.s_det[9] = '';
			s_wr_sel.s_det[10] = '';
			s_wr_sel.s_det[11] = '';
			s_wr_sel.s_det[12] = ls_alumno_carrera;
			s_wr_sel.s_det[13] = ls_inscripto_carrera;		

			uoAux.is_sede = sede
			is_carreras_preinsc[li_cant_registros + 1] = carrera;
			
			Tab_1.tp[5].Event dynamic trigger ue_alta_carrera(s_wr_sel)
			
			li_cant_registros++		
	LOOP

Se que no es lo óptimo, pero funcionó bien con las pruebas.

Cualquier sugerencia, será bienvenida. Estamos usando Postgresql 9.2. Quizá algo haya ahí, porque le estuve dando vueltas y vueltas al tema sin llegar a una solución a ese error que les dejé más arriba en el hilo de estos mensajes.