Error en sp_ted_1e con Gestion v2.95

Buenos días a todos, estamos probando la versión 2.9.5 y encontramos un error en la impresión del Certificado Analitico TED 1E.
Revisando el sp_ted _1e el error proviene de la función sp_numero_a_texto que invoca para imprimir la fecha en forma de texto.
El mensaje de error es : SQL Error (-881) : Resulting string length must be less than or equal to 255.
Le pasó a alguien?

Saludos, Pablo.-

Hola Pablo, seguro da el error ahi?
No veo que haya una fecha que pasada a texto supere los 255 caracteres. Podes ver cual es la fecha de egreso que da error y tratar de ejecutar ese proceso y ver si da el error y determinar a que se debe?

Proba:
EXECUTE PROCEDURE sp_fecha_a_texto(to_date(‘29/03/2019’ , ‘%d/%m/%Y’), 2);

Hola Alejandro, ejecutando el SP que me enviaste directamente en la base de datos tira el mismo error

EXECUTE PROCEDURE sp_fecha_a_texto(to_date(‘29/03/2019’ , ‘%d/%m/%Y’), 2);
[Informix][Universal Server][pruebas] SQL Error (-881) : Resulting string length must be less than or equal to 255.

Lo estoy depurando pero no encuentro el error, pareciera que hay algo que se van de escala en el WHILE.

Pablo.-

Hola Pablo, hice la prueba y muestra bien el mensaje.
Adjunto captura de pantalla.

Proba esto si alguno da error:

EXECUTE PROCEDURE sp_numero_a_texto(Year(to_date('29/03/2019' , '%d/%m/%Y')),2);
EXECUTE PROCEDURE sp_numero_a_texto(Day(to_date('29/03/2019' , '%d/%m/%Y')),2);


fecha_a_texto_g2.png

fecha_a_texto_g2.png

sp_numero_a_texto.sql (6.76 KB)

sp_fecha_a_texto.sql (1.72 KB)

Alejandro, ahí hice la prueba con el script sp_numero_a_texto.sql que me enviaste

El que tiene YEAR sale con el mismo error:SQL Error (-881) : Resulting string length must be less than or equal to 255.
EXECUTE PROCEDURE sp_numero_a_texto(Year(to_date(‘29/03/2019’ , ‘%d/%m/%Y’)),2);

El que tiene DAY sale bien con veintinueve
EXECUTE PROCEDURE sp_numero_a_texto(Day(to_date(‘29/03/2019’ , ‘%d/%m/%Y’)),2);

podes poner un debug en ese procedure y ver cual es el problema?
Enviá el archivo que se genera y vemos a que se debe el error.

Una curiosidad es que la función con números hasta 999 funciona bien y a partir de 1000 tira error.

EXECUTE PROCEDURE sp_numero_a_texto(999,2); --novecientos noventa y nueve
EXECUTE PROCEDURE sp_numero_a_texto(1000,2); --Error

Tomando de referencia el script que me enviaste en que parte del código pongo el DEBUG?

Esto da 1000 y -1 ?

select CAST(1000 as Integer), CAST(LENGTH(CAST((1000 - 1000) as varchar(100))) as INTEGER) - 2 from sga_unidades_acad;

Pone el debug al comienzo del procedure.

Ahi adjunto el archivo debug.txt

La salida de la consulta :
select CAST(1000 as Integer), CAST(LENGTH(CAST((1000 - 1000) as varchar(100))) as INTEGER) - 2 from sga_unidades_acad;

es la misma que me enviaste 1000 y -1


debug.txt (11.3 KB)

En la respuesta #3 te habia enviado los dos procedures. Probaste recreando esos procedures?

Sino ademas fijate de agregar lo siguiente luego del DEFINE;

 LET lcCadena = '';

Hola Alejandro,
Probé recreando los dos Stored Procedure que me enviaste en respuesta #3 y le agregue LET lcCadena = ‘’;

EXECUTE PROCEDURE sp_numero_a_texto(Year(to_date(‘29/03/2019’ , ‘%d/%m/%Y’)),2);
Este falla porque es 2019 y falla cuando los números son mayor a 1000

EXECUTE PROCEDURE sp_numero_a_texto(Day(to_date(‘29/03/2019’ , ‘%d/%m/%Y’)),2);
Este salen bien porque es 29

Te paso la salida del DEBUG
EXECUTE PROCEDURE sp_numero_a_texto(Year(to_date(‘29/03/2019’ , ‘%d/%m/%Y’)),2);


siudebug.txt (11.3 KB)

Veo el debug, no se porque agrega espacios antes del MIL, porque si te fijas queda algo asi:
DOS MIL

Modifique el procedure, agregue que limpie blancos a izquierda y derecha. Probalo y avisame.
Es raro porque en mi instalacion no tengo ese problema. Que version de informix es?


sp_numero_a_texto.sql (6.97 KB)

Hola Alejandro, justo te iba a escribir comentando lo mismo, estuve mirando el DEBUG y no sé porque le agrega esos espacios de más.
Nosotros tenemos Informix 9.40
Agregando el TRIM a lcCadena se solucionó.

¿Será algun error del motor de BD?

Si debe ser algun problema con esa version de informix, porque yo lo probe sobre version 9.21 y no pude reproducir ese error.

Bueno Alejandro muchas gracias por la ayuda.
Podemos cerrar el tema.

Saludos, Pablo.-