Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL y COM/OLE (https://www.cobolforo.es/forumdisplay.php?f=32)
-   -   [Duda] Error al pasar un GRID a EXCEL (https://www.cobolforo.es/showthread.php?t=235)

Josber 10 de septiembre de 2015 13:31

Error al pasar un GRID a EXCEL
 
3 Archivos Adjunto(s)
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

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:

Código COBOL:
  1.            IF IDX2 < 27
  2.               MOVE " "          TO INIRANGE(11:1)
  3.               MOVE ARRCOL(IDX2) TO INIRANGE(12:1)
  4.            ELSE
  5.               SUBTRACT 26 FROM IDX2 GIVING COLVAL
  6.               MOVE "A"          TO INIRANGE(11:1)
  7.               MOVE ARRCOL(COLVAL) TO INIRANGE(12:1)
  8.            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:

Código COBOL:
  1.            EVALUATE IDX2
  2.                     WHEN 183 THRU 208
  3.                          SUBTRACT 182 FROM IDX2 GIVING COLVAL
  4.                          MOVE "G"            TO INIRANGE(11:1)
  5.                          MOVE ARRCOL(COLVAL) TO INIRANGE(12:1)
  6.                     WHEN 157 THRU 182
  7.                          SUBTRACT 156 FROM IDX2 GIVING COLVAL
  8.                          MOVE "F"            TO INIRANGE(11:1)
  9.                          MOVE ARRCOL(COLVAL) TO INIRANGE(12:1)
  10.                     WHEN 131 THRU 156
  11.                          SUBTRACT 130 FROM IDX2 GIVING COLVAL
  12.                          MOVE "E"            TO INIRANGE(11:1)
  13.                          MOVE ARRCOL(COLVAL) TO INIRANGE(12:1)
  14.                     WHEN 105 THRU 130
  15.                          SUBTRACT 104 FROM IDX2 GIVING COLVAL
  16.                          MOVE "D"            TO INIRANGE(11:1)
  17.                          MOVE ARRCOL(COLVAL) TO INIRANGE(12:1)
  18.                     WHEN 79 THRU 104
  19.                          SUBTRACT 78 FROM IDX2 GIVING COLVAL
  20.                          MOVE "C"            TO INIRANGE(11:1)
  21.                          MOVE ARRCOL(COLVAL) TO INIRANGE(12:1)
  22.                     WHEN 53 THRU 78
  23.                          SUBTRACT 52 FROM IDX2 GIVING COLVAL
  24.                          MOVE "B"            TO INIRANGE(11:1)
  25.                          MOVE ARRCOL(COLVAL) TO INIRANGE(12:1)
  26.                     WHEN 27 THRU 52
  27.                          SUBTRACT 26 FROM IDX2 GIVING COLVAL
  28.                          MOVE "A"            TO INIRANGE(11:1)
  29.                          MOVE ARRCOL(COLVAL) TO INIRANGE(12:1)
  30.                     WHEN 1 THRU 26
  31.                          MOVE " "          TO INIRANGE(11:1)
  32.                          MOVE ARRCOL(IDX2) TO INIRANGE(12:1)
  33.            END-EVALUATE

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

Un saludo.-


La franja horaria es GMT +2. Ahora son las 01:26.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.