Error en la generacion de datos becasprogresar

Estimados, al querer generar los datos me sale el error de que no recupera la duracion en años, estamos en la version 2.9.5 adjunto los datos de la tabla sga_planes y sga_titulos. Gracias


error_duracion_carrera.zip (12.9 KB)

Por favor si me podrian dar una respuesta, todavia no hemos podido avanzar …gracias

Hola Lorena, podes hacer un debug en la ventana w_informacion_academica_becas, en la funcion wf_duracion_plan.
Fijate cuando intente consultar la duración de ese plan de estudios, si da error la query o porque devuelve el valor 0 o nulo para ese plan.

Hola Alejandro, si lo habia hecho me olvide de comentarlo y me devuelve 0 el resultado de esa función pero no logro saber el motivo…

La funcion devuelve 0, pero la query que esta dentro de esa funcion? Pudiste verificar si es que la query da algun error (por ejemplo que no tiene permisos de lectura la tabla sga_planes) o que el plan que se consulta es otro y tiene definido el valor 0 en ese campo?

Buen dia, envio capturas del debug y como esta la informacion en sga_planes


carrera 088.zip (57.1 KB)

Lorena, estas consultando en la misma base?
La variable is_unidad_academica llega con el valor UACO?

¿Te fijaste si sale con error por SQLCA.SQLCode = -1 ?

Alejandro, todas las respuestas son Si, te envio captura con los valores de las variables que mencionas


rta_debug.png

rta_debug.png

Entonces por favor fajate la variable global transaction SQLCA, y de esta el mensaje, del porque falla, quizas no tenes permisos de lectura sobre esa tabla.
O alli adentro pone el siguiente mensaje:

 Messagebox('Error al consultar la tabla sga_planes', 'Código: ' + String(SQLCA.SQLDBcode) + ' - ' + SQLCA.SQLErrText, Exclamation!)

No se si hice bien, reemplace return duracion_años por el mensaje
Messagebox(‘Error al consultar la tabla sga_planes’, 'Código: ’ + String(SQLCA.SQLDBcode) + ’ - ’ + SQLCA.SQLErrText, Exclamation!)
el resultado lo adjunto


error.png

error.png

Podes verificar si el campo “duracion_numerica” de la tabla “sga_planes” tiene el tipo de datos decimal(5,2) ?
¿Que datos devuelve la siguiente consulta?

SELECT coltype, collength 
FROM syscolumns WHERE colname = 'duracion_numerica' 
AND tabid in (SELECT tabid FROM systables WHERE tabname = 'sga_planes') 

COLTYPE
Code indicating the data type of the column:
0 = CHAR
1 = SMALLINT
2 = INTEGER
3 = FLOAT
4 = SMALLFLOAT
5 = DECIMAL
6 = SERIAL 1
7 = DATE
8 = MONEY
9 = NULL
10 = DATETIME
11 = BYTE
12 = TEXT
13 = VARCHAR
14 = INTERVAL
15 = NCHAR
16 = NVARCHAR
17 = INT8
18 = SERIAL8 1
19 = SET
20 = MULTISET
21 = LIST
22 = ROW (unnamed)
23 = COLLECTION
40 = LVARCHAR fixed-length opaque types 2
41 = BLOB, BOOLEAN, CLOB variable-length opaque types 2
43 = LVARCHAR (client-side only)
45 = BOOLEAN
52 = BIGINT
53 = BIGSERIAL 1
2061 = IDSSECURITYLABEL 2, 3
4118 = ROW (named)

Hola, si el campo duracion_numerica tiene el formato decimal (5,2)
La consulta devuelve lo siguiente:

5 1282

Lorena, no puedo reproducir ese error. Probe con un plan definiendo 5.5 en duración numerica, y al hacer el Integer(5.5) devuelve 6. Pero no logro que de ese error que mencionas.
El código de esa funcion es como este? ¿La variable “duracion” esta definida como decimal?

Decimal duracion
Integer duracion_anios

duracion = 0
SetNull(duracion_anios)

SELECT duracion_numerica INTO :duracion
FROM dba.sga_planes
WHERE unidad_academica = :is_unidad_academica
 and carrera = :carrera
 and plan    = :plan
USING SQLCA;

IF SQLCA.SQLCode = -1 then
	MessageBox('Error al recuperar duraciòn teórica','Carrera: ' + carrera + ' - Plan: ' + plan +  char(13) + &
	           'Error: ' + String(SQLCA.SQLDBcode) + ' - ' + SQLCA.SQLErrText,Information!)
	Return duracion_anios
END IF
	
// Retorno en integer
duracion_anios = Integer(duracion)

Return duracion_anios

6

Si esta igual la funcion…

¿Son muchos registros en esa tabla de planes de estudio?
Porque podes editarlo y definir el valor que corresponda a cada plan. (No es la solucion al error, pero para salir del paso si necesitan informar!)

Ah dale buenisimo! me fijo si puedo hacerlo sino ya me estare contactando…Gracias!

En que tabla deberia editar ? en int_cone_planes? porque me dice que no existe

No, lo haces sobre el archivo planes_estudio.txt que se genera desde esa operación.
Si lo editas veras algo como lo siguiente:
895|349|10296|34|5
895|450|10196|37|5
895|450|2|32|5
895|1310|104|8|3

El último dato de cada fila (plan de estudios) es el que corresponde a la duración en años de la carrera.

Ah pense que con ese problema no se llegaban a generar los txt, creo que tengo un problema con la ventana porque no esta el boton siguiente, nosotros descargamos de colab los componentes pero quizas no sean los correctos, por favor me podrias enviar el enlace con la ultima version ? Gracias

Te envio un rar con los archivos. Fijate si tenes lo mismo.


Becas-PNBU-Renovacion 2021.rar (678 KB)