PDA

Ver la Versión Completa : [Duda] Error al pasar un GRID a EXCEL


Josber
10 de septiembre de 2015, 13:31
Estoy usando la rutina que puso Rui hace tiempo, para pasar un grid a excel, la tengo instaurada en muchos programas y funciona perfectamente, pero hay uno que me da error, la he revisado muchas veces y no hay manera.

Pongo la pantalla de error, la captura del fichero .log y la parte de código donde arroja el error, a ver si alguien me puede echar una mano.

Como nota informativa, el GRID tiene 56 columnas por 2 lineas.

Muchas gracias a todos.

Un saludo.-

Kuk
10 de septiembre de 2015, 14:15
Josber, antes de la linea 180 habría que preguntar que ARRAYOBJ no es nulo. No sé si NULL de COBOL o POW-NULL de Power, pregunta por amos y muestra un MessageBox en caso de nulo. Creo que ese es el problema.

Además, puedes interceptar este error. Puede ver cómo se hace aquí : [Sintaxis] Como descifrar valores de COM-EXCEPTION - COBOL Foro (http://cobolforo.es/showthread.php?t=104)

Rapinto
10 de septiembre de 2015, 16:28
Josber,

KUK pode ter razão e ser um problema de NULL.
Pela primeira imagem o erro é em SET-VALUE, o que quer dizer que estás a passar um Alfa para uma coluna definida como numérica ou vice-versa.

Tenta no teu programa garantir que todos os campos que estás a passar do teu programa estão preenchidos.
A mim nunca me aconteceu isso. Mas eu verifico sempre se tenho o campo preenchido.

Se tiveres dificuldade, monta um exemplo e envia para mim que eu verifico se encontro o problema.
Saludos,
Rui

Josber
10 de septiembre de 2015, 17:04
Gracias Kuk, acabo de solucionarlo, el problema está en que Rui, calculó la rutina para un máximo de 52 columnas, dede An hasta AZn, para lo que usó éste código:


IF IDX2 < 27
MOVE " " TO INIRANGE(11:1)
MOVE ARRCOL(IDX2) TO INIRANGE(12:1)
ELSE
SUBTRACT 26 FROM IDX2 GIVING COLVAL
MOVE "A" TO INIRANGE(11:1)
MOVE ARRCOL(COLVAL) TO INIRANGE(12:1)
END-IF.


Yo estaba usando 56 columnas, por lo que el rango de celdas a llenar, era mayor y daba el error, lo he cambiado por:


EVALUATE IDX2
WHEN 183 THRU 208
SUBTRACT 182 FROM IDX2 GIVING COLVAL
MOVE "G" TO INIRANGE(11:1)
MOVE ARRCOL(COLVAL) TO INIRANGE(12:1)
WHEN 157 THRU 182
SUBTRACT 156 FROM IDX2 GIVING COLVAL
MOVE "F" TO INIRANGE(11:1)
MOVE ARRCOL(COLVAL) TO INIRANGE(12:1)
WHEN 131 THRU 156
SUBTRACT 130 FROM IDX2 GIVING COLVAL
MOVE "E" TO INIRANGE(11:1)
MOVE ARRCOL(COLVAL) TO INIRANGE(12:1)
WHEN 105 THRU 130
SUBTRACT 104 FROM IDX2 GIVING COLVAL
MOVE "D" TO INIRANGE(11:1)
MOVE ARRCOL(COLVAL) TO INIRANGE(12:1)
WHEN 79 THRU 104
SUBTRACT 78 FROM IDX2 GIVING COLVAL
MOVE "C" TO INIRANGE(11:1)
MOVE ARRCOL(COLVAL) TO INIRANGE(12:1)
WHEN 53 THRU 78
SUBTRACT 52 FROM IDX2 GIVING COLVAL
MOVE "B" TO INIRANGE(11:1)
MOVE ARRCOL(COLVAL) TO INIRANGE(12:1)
WHEN 27 THRU 52
SUBTRACT 26 FROM IDX2 GIVING COLVAL
MOVE "A" TO INIRANGE(11:1)
MOVE ARRCOL(COLVAL) TO INIRANGE(12:1)
WHEN 1 THRU 26
MOVE " " TO INIRANGE(11:1)
MOVE ARRCOL(IDX2) TO INIRANGE(12:1)
END-EVALUATE


Me ha costado encontrarlo, porque no me imaginaba que fuera eso, pero al final ha caido.

Un saludo.-