Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   Cocina PowerCOBOL (https://www.cobolforo.es/forumdisplay.php?f=24)
-   -   [PowerCOBOL] Desde Excel a ListView o CmTable (https://www.cobolforo.es/showthread.php?t=1096)

Josber 7 de abril de 2020 19:26

Desde Excel a ListView o CmTable
 
2 Archivos Adjunto(s)
Bueno es un pequeño aporte de un programa que pasa una hoja de cálculo con algo más de 14.500 registros a un control ListView, (Grid) o a un control CmTable, (Tabla).

El fichero Excel que se traspasa es el de códigos postales de España, hay que tener en cuenta que, los códigos postales , municipios y provincias, son válidos, pero las coordenadas X e Y, (columna 5 y 6), son datos ficticios, añadidos sólo para esta ocasión.

Otros detalles:
- El control CmTable, no soporta más de 2.000 lineas, por lo que se hace la carga en varias veces, (si el usuario así lo desea).
- Tanto el control CmTable, como el control ListView, no soportan más de 14 enteros y 4 decimales, si ponemos más nos dará un aviso, que no un error, y todos los que pongamos de más, se mostrarán como 0, (ceros).
- El proceso es lento, al empezar el traspaso, hay un pequeño retardo, debido a la apertura de la hoja de cálculo, y además, se comprueba la cantidad de registros que hay, para poder cargarlos en el control ProgressIndicator
- En varios sitios, se utiliza la llamada a la subrutina CBL_DELETE_FILE2, por lo que sólo funcionará en PWC ver. 7 o superior, para las versiones 4, 5 y 6, hay que cambiarla por CBL_DELETE_FILE, con la salvedad de que ésta última, no soporta los espacios en blanco en la ruta ni en el nombre del fichero.
- Como ejemplo, porque creo que no hay ninguno, utilizo un fichero Sort, (uso de SD en vez de FD en FILE SECTION) para ordenar la tabla, (evento Click del control TABLA)

Entorno: PWC 7 a PWC 9
Tipo: Ejecutable
Contenido: Ejecutable, Proyecto, Iconos, Imágenes, archivo excel en un archivo RAR
Tamaño de la descarga: 780Kb
.

Socavi 9 de abril de 2020 19:18

Hola Josber:

Para probar, lo he puesto en c:\excel, lo he compilado y me llevo la primera sorpresa puesto que no arranca, dónde he de instalarlo para verlo funcionar ?

Aprovecho para felicitarte, por la buena presentación y la pulcritud en la escritura de todo el programa, lo que me da a entender que eres un buen profesional, haber si puedo utilizar el programa, y se me "pega algo", jajaja.

Si no es mucha molestia y tus obligaciones te lo permiten, me atrevo a sugerir otra clase práctica, pero ésta vez con las coordenadas de Latitud y Longitud, a mi se me ha ocurrido ya que no se puede trabajar con los 6 decimales, hacerlo con numeros enteros, sin decimales, sustituyéncolos, por la presentacion -ZZ.ZZZZZZ, pero no me gusta como queda.

Muchas Gracias y lo dicho Felicidades, por tu bien hacer.

Josber 10 de abril de 2020 12:56

Cita:

Citación del post de Socavi (Mensaje 5432)
Para probar, lo he puesto en c:\excel, lo he compilado y me llevo la primera sorpresa puesto que no arranca, dónde he de instalarlo para verlo funcionar ?

Qué raro, porque está creado y compilado ahí, dime cuál es el error que te da, a ver si le sacamos punta.

Cita:

Citación del post de Socavi (Mensaje 5432)
por la buena presentación y la pulcritud en la escritura de todo el programa

Muuuuuuchas gracias, como he comentado en otro post de éste foro, me gusta mucho dejar espacios en blanco y, sobre todo, indentar el código, COBOL es un lenguaje muy bonito, pero hay que escribir mucho y, si no lo hacemos con claridad, mal vamos.

Cita:

Citación del post de Socavi (Mensaje 5432)
con numeros enteros, sin decimales, sustituyéncolos, por la presentacion -ZZ.ZZZZZZ

¡¡¡ Uff !!, es que te quedan pocas posibilidades más, a no ser que utilices un componente de terceros que sí permita más de 4 decimales. La verdad es que soy de los que piensan que, 4 decimales es muy poco, pero es lo que hay. A ver si a alguien se le ocurre otra idea de presentación y la quiere exponer por aquí.

Un saludo.-

Kuk 10 de abril de 2020 13:18

Socavi, Josber, cuál es el problema exactamente con las decimales ? No caigo :piensa:

Socavi 10 de abril de 2020 14:24

1 Archivos Adjunto(s)
Hola Josber:

No da ningún error, 'activas el programa' una vez compilado, sale unos segundos el circulito oazul rodando, pero no hace nada de nada, no sale el programa para poder operar con el, nada.

Socavi 10 de abril de 2020 16:20

Hola Kuk:

Lo de los 6 decimales, viene al caso de las coordenadas geográficas (Latitud-Longitud) , Cobol no permite trabajar con 6 decimales y creo recordar que en una ocasión, le sugertíste a Fito que utilizara dos TextBox y Fito recordó tener un programa mediante el cual conseguía obtener la posibilidad de operar a plena satisfacción.

El caso es que yo he probado utilizar con 8 números sin decimales, pero con la máscara
-ZZ.ZZZZZZ, pero no acaba de convencerme porque hay casos donde la longitud y Latitud se expresa con cinco decimales y en ésos casos se añade un cero al final para completar lo determinado por la máscara de presentación.

Total que sugeri a Josber, si se pudiera plantear una solución mas idónea que reflejara una mayor exactitud.

Josber 10 de abril de 2020 17:57

Cita:

Citación del post de Kuk (Mensaje 5434)
cuál es el problema exactamente con las decimales ? No caigo

Kuk, Socavi utiliza el tema de coordenadas GPS y necesita al menos 6 decimales, los controles CmTable y ListView, no soportan más de 4 decimales en pantalla

Socavi, ¿Tienes instalado Excel, ¿no?, (no vale uno compatible tipo LibreOficce o por el estilo, tiene que ser Microsoft Excel)

Cita:

Citación del post de Socavi (Mensaje 5437)
se añade un cero al final para completar lo determinado por la máscara

Pero eso te va a pasar igual si soportase 4, 6 o 20 decimales, ¿no?

Un salu2.-

Fito 11 de abril de 2020 03:33

Hola:

Lo estuve pensando y no te va a quedar otra que tratar como texto, y después analizarás el string para determinar dónde está la coma decimal y así interpretar el valor, así después lo podés grabar en un campo de archivo con formato de seis decimales.

Saludos...

Fito...

Socavi 11 de abril de 2020 13:53

1 Archivos Adjunto(s)
Josber,

El 'paquete' corresponde a Microsoft Office 2.019. con toda seguridad, saludos cordiales

Archivo Adjunto 538

Josber 11 de abril de 2020 17:23

Cita:

Citación del post de Socavi (Mensaje 5440)
El 'paquete' corresponde a Microsoft Office 2.019. con toda seguridad, saludos cordiales

Pues es muy raro, a ver si se lo puede bajar alguin más, probarlo en esa misma ruta y decir si le funciona.

Un saludo.-

Kuk 13 de abril de 2020 15:22

Josber, lo que se podría hacer es NO usar punto decimal en los controles. Simplemente al meterlos o recogerlos usar un campo redefinido con V.

jmeza 14 de abril de 2020 02:43

Cita:

Citación del post de Josber (Mensaje 5442)
Pues es muy raro, a ver si se lo puede bajar alguin más, probarlo en esa misma ruta y decir si le funciona.

Un saludo.-

Josber, baje el programa para probar y no funciona

Saludos

Josber 14 de abril de 2020 20:12

Cita:

Citación del post de jmeza (Mensaje 5452)
Josber, baje el programa para probar y no funciona

Gracias jmeza, voy a probarlo en otra máquina, porque en la que lo hice, indudablemente, funciona y a ver que puede pasar.

Un saludo.-

---------- Post añadido : 20:12 ---------- Post anterior : 08:44 ----------

jmeza, Socavi,

He probado en otro ordenador y funciona perfectamente, ¿puede ser que los runtime que tenéis instalados, no sean los últimos?. Los podéis bajar e instalar desde Run-Times y Merge-Modules v10.0, porque de lo contrario, no se me ocurre que es lo que puede pasar.

Un saludo.-

Socavi 14 de abril de 2020 22:03

Josber:

Te resultaría complicado compilar el programa con los Runtimes de la V.9 ?, me gustaría poder ver tu programa funcionando, yo de momento no voy a instalar los nuevos runtimes, aunque si los he bajado.

No tengo grandes conocimientos y no voy a arriesgarme a no saber retroceder los pasos, si decidiera regresar a como lo tengo ahora.

Gracias de todos modos.
Saludos cordiales.

Josber 15 de abril de 2020 08:27

Cita:

Citación del post de Socavi (Mensaje 5461)
Te resultaría complicado compilar el programa con los Runtimes de la V.9 ?

Pues una vez instalados, no sé si puedo quitarlos, a ver si alguien me puede informar de eso.

Un saludo.-

Kuk 15 de abril de 2020 11:24

Socavi, Josber, el problema es que no se puede compilar con unos Run-Times. Se puede compilar con una versión del kit de compilador, al cual corresponde una u otra version de run-time.

Es decir, para que sea compatible con los Run-Times v9, hay que compilar con el compilador v9 (el NetCOBOL/PowerCOBOL v9).

Josber 15 de abril de 2020 11:55

Kuk,

Eso lo tengo claro desde el principio Kuk, pero todos sabemos que, los run-time de versiones superiores, ejecutan compilaciones de versiones inferiores sin problemas y, yo lo que intento decirles es que quizás no les funcione el programa porque, yo lo tengo compilado con un "kit" de la versión 9 y ellos quizás tengan instalada una versión anterior, (7 , 8 ...). Entonces les quería decir que, se descarguen los run-time de la versión 10, que son los que tengo yo instalados y que prueben a ver porqué no les funciona el programa, Yo al tener instalados los de la versión 10, no sé si podría ir "hacia atrás" y ponerme los de la versión 9 sin tener problemas de compatibilidad.

Un saludo.-

Socavi 19 de abril de 2020 19:21

Josber:

Resuelto el enigma de poder ver en funcionamiento el ListView, al descomprimir el archivo *rar" este crea una carpeta dentro del directorio de Excel, con el nombre Desde_Excel, que al compilar el programa, desde ahí, compila, pero no funciona.

Hay que traspasar a c:\Excel todo, y funciona como debe.

Saludos cordiales.

Socavi 3 de mayo de 2020 11:07

Josber:

Estoy intentando aprender fijándome en tu ListView y me encuentro con un problema en la compilación de mi prueba.

Existe una carpeta denominada Desde_Excel, que la he puesto dónde tengo el programa, y me da un error en el CAMPO1 al hacer la llamada a WS-ATENCION "is undefined".

Dónde he de poner la carpeta Desde_Excel ?

Muchas gracias por tu ayuda.

Josber 3 de mayo de 2020 19:55

Cita:

Citación del post de Socavi (Mensaje 5607)
WS-ATENCION "is undefined"

Defínelo en la WORKING principal así:

Código COBOL:
  1. 01  WS-ATENCION                 PIC X(18) VALUE " ¡ Atención ... ! " GLOBAL.

Un salu2.-

Socavi 1 de diciembre de 2022 17:32

Josber, podrías ayudarme ? al objeto de actualizar datos de un programa demografico que hice por el 2015. utilice tu programa creo que era éste Desde_Excel que sigue funcionando perfectamente, pero no encuentro el programa complemento, para que una vez conseguido pasar los datos de una hoja de calculo de Excel, pasaba los datos del listView al programa.

Podrías hacer un pequeño ejemplo para rescatar los datos y grabarlos en el Programa.

Saludos

Josber 1 de diciembre de 2022 18:33

@Socavi, Perdona, no entiendo exactamente qué es lo que necesitas, ¿pasar de Excel a programa o al revés?

Un salu2.-

Socavi 2 de diciembre de 2022 11:34

Lo que necesito es que una ves pasado el Excel a la grilla, disponer de lo expuesto, para grabarlo en el programa.

Es decir yo tengo un programa demográfico en el que hay municipios, por ejemplo, al tener más de 8.000 pues traspasar los habitantes de cada municipio a su lugar, sin necesidad de "picar" las entradas una a una.

Aprovechando que tengo la grilla cómo he de hacerlo para integrarlo en el programa concreto de municipio. Lo tenia echo pero he cambiado el PC y por lo vísto lo he perdido o no lo encuentro,

Muchas gracias

Socavi 2 de diciembre de 2022 12:55

1 Archivos Adjunto(s)
Por si ayuda a entender mi necesidad, acompaño esta "captura" en la que señalo con una flecha, que necesito que al oprimir el boton indicado, mediante la programación (que he perddido) pudiera hacer el traspaso al programa correspondiente, de la totalidad de los datos que figuran en el listview.Archivo Adjunto 833

Josber 2 de diciembre de 2022 13:46

3 Archivos Adjunto(s)
Vale @Socavi, ahora lo pillo,
A ver, te subo el programa que tengo hecho en PWC9 de códigos postales, que importa todos los códigos postales de España, que me bajé en Excel de la página web de correos hace un tiempo. El programa no lo podrás ejecutar, porque te faltarán librerías, etc, pero creo que lo entenderás bastante bien como para darle un vistazo al subprograma de importación. Lo que hago es leer un archivo Excel y traspasar los datos a una BD en MySql, (MariaDB para ser más exactos), a la vez que genero un fichero plano de log, con la información del traspaso. A ver si con esto te vale ...

Si tienes dudas me lo dices, te paso el rar con el ppj, el Excel y un ejemplo de log que genero.

Un salu2.-

Socavi 2 de diciembre de 2022 18:22

No se utilizarlo Josber, pero muchas gracias.

Esto que acompaño, no me funciona, pero quisiera algo así:
Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  ENVIRONMENT DIVISION.
  3.  DATA            DIVISION.
  4.  WORKING-STORAGE SECTION.
  5.  77 WK-ROW      PIC 9(5).
  6.  01  CODIGO      PIC 9(5).
  7.  01  FINFIC      PIC X.
  8.  01  LI          PIC 9(8).
  9.  01  LIO         PIC 9(8).
  10.  01  DESDE       PIC 9(8).
  11.  01 POW-PCMLIST OBJECT REFERENCE POW-CLISTITEM.
  12.  PROCEDURE   DIVISION.
  13.  
  14.    OPEN OPEN I-O PROVIN
  15.      MOVE POW-NUMERIC OF P-LIN  TO DESDE
  16.      MOVE POW-NUMERIC OF P-LIN3 TO PROVCOD
  17.      MOVE ROWCOUNT OF VIEW TO LIO
  18.      PERFORM VARYING LI FROM DESDE BY 1 UNTIL LI > LIO
  19.      MOVE 'TEXT'    OF "listitems"(LI, 1) OF VIEW2 TO PROVCOD
  20.      MOVE "Text"    OF "listitems"(LI, 2) OF VIEW2 TO PROVNOM
  21.      MOVE 'Numeric' OF "listitems"(LI, 3) OF VIEW2 TO PROVPOB
  22.      MOVE 'Numeric' OF "listitems"(LI, 4) OF VIEW2 TO PROVHOM
  23.      MOVE 'Numeric' OF "listitems"(LI, 5) OF VIEW2 TO PROVDON
  24.      REWRITE REGPROV
  25.            DISPLAY 'ERROR AL GRABAR'
  26.      END-WRITE
  27.            ADD 1 TO PROVCOD
  28.      END-PERFORM
  29.      CLOSE PROVIN    
  30.      
  31.      OPEN INPUT PROVIN
  32.      DISPLAY '---------<  INICIO FICHERO  >----------------'
  33.      INITIALIZE FINFIC
  34.      PERFORM UNTIL FINFIC = 'S'
  35.         READ PROVIN NEXT RECORD AT END MOVE 'S' TO FINFIC
  36.            NOT AT END
  37.            DISPLAY PROVCOD ' - ' PROVNOM(1) ' - ' PROVPOB ' - ' PROVHOM
  38.         END-READ
  39.      END-PERFORM
  40.      CLOSE PROVIN

Josber 3 de diciembre de 2022 13:09

@Socavi, a ver, porque ando algo "espeso", el ejemplo que te he pasado, es para, leer un Excel y, ese Excel, lo pasa a un fichero, en éste caso es un BD, pero que da lo mismo si es eso o si es un fichero nativo COBOL, por lo que yo entiendo, el traspaso de Excel a la grilla, ya lo haces tú sin problemas, ¿no?, o ¿es eso lo que no tienes?, (el traspaso de Excel a la grilla)

De todas forma, en el código que has puesto, te sobra un OPEN al principio, lo pones 2 veces y, por otro lado, la grilla que usas, ¿es un Table Control o un ListView Control?, porque dependiendo del que uses, (y parece que es un Table Control), se hará de una manera o de otra.

¿Qué versión de PWC?, tienes, por como codificas, parece la versión 3

Un salu2.-

Fito 3 de diciembre de 2022 14:16

Hola @Socavi, :

Nunca he usado listview, así que no conozco su sintaxis, pero si me guio por el ejemplo de @Josber, ahí lo estás usando mal. A lo mejor es otra forma de hacerlo.

Y también me llama la atención el REWRITE que finaliza con un END-WRITE.

Además veo que arriba estás moviendo un valor numérico a PROVCOD en dentro del perform le movés texto y abajo de write le sumás 1.

Otra cosa, si ya hiciste el proceso para pasar del Excel al Listview, podés usar el mismo para pasarlo a tu archivo. En vez de pasar desde el Listview lo pasas de nuevo desde el Excel,

Saludos

Fito...

Socavi 3 de diciembre de 2022 19:02

uso Listview. PWC9 en Windows-11.

Necesito ayuda porque no he sabido encontrar ningun ejemplo que pase del listview al programa.

el Listview que estoy usando es de un ejemplo tuyo que nombraste como Desde_Excel, adaptado a mis ficheros, esto lo he conseguido pero no se pasarlos al programa. Muchas gracias por vuestra paciencia.

Socavi 3 de diciembre de 2022 19:13

Estimado Fito, gracias por tus puntuales observaciones, a las que intentaré dar solución aunque no me hago ilusiones, porque en realidad soy un entusiasta pero muchas veces no consigo entender, como se puede hacer algo tan simple, que os parece a los profesionales con los aprendices tardíos, jajaja.

No sabia que se pudieran pasar los datos desde Excel al Listview, chico entre que no hablo inglés y los 'mareos mentales' hay cosas que para hacerlas, despues de muchas pruebas, se consiguen y otras no, cuando me aburro de hacer pruebas lo dejo una temporada y cuando me vuelve a despertar el interés, regreso al redil.

Si te parece bien y puedes mandarme un ejemplo de pasar la información de Excel a programa, me esforzaré para obtener el resultado deseado

Muchas gracias por vuestra dedicación y paciencia

Josber 5 de diciembre de 2022 12:42

1 Archivos Adjunto(s)
Hola @Socavi,

A ver si con éste ejemplo te aclaras más
Supón que tienes una hoja de cálculo como la que adjunto en la imagen, y quieres traspasar los datos a un fichero, que se llama en éste caso FICHERO.DAT, lo primero es que en tu Form, has de insertar con ExcelControl, que se llame CmExcel1, el código para traspasar los datos, que supongo que irá en un ButtomControl, (un botón), sería así:

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  INPUT-OUTPUT    SECTION.
  3.  FILE-CONTROL.
  4.      SELECT OPTIONAL FICHERO
  5.             ASSIGN TO "FICHERO.DAT"
  6.             ORGANIZATION IS INDEXED
  7.             ACCESS MODE  IS DYNAMIC
  8.             FILE STATUS  IS STFIC
  9.             LOCK         IS AUTOMATIC WITH LOCK ON RECORD.
  10.  DATA            DIVISION.
  11.  FILE          SECTION.
  12.  FD  FICHERO IS GLOBAL
  13.      LABEL RECORD IS STANDARD
  14.      DATA  RECORD IS REG_FIC.
  15.  01  REG_FIC.
  16.      03  FICCP          PIC 9(05).
  17.      03  FICPOB         PIC X(30).
  18.      03  FICPRO         PIC X(20).
  19.      03  FICPAI         PIC X(20).
  20.  WORKING-STORAGE SECTION.
  21.  01  ESTILO         PIC S9(5) COMP-5.
  22.  01  RETORNO            PIC S9(5) COMP-5.
  23.  01  LIN                PIC  9(9) COMP-5.
  24.  01  STFIC          PIC XX.
  25.  PROCEDURE       DIVISION.
  26. *
  27.  INICIO.
  28.      OPEN I-O FICHERO.
  29.      INITIALIZE REG_FIC.
  30.  
  31.      INVOKE CmExcel1 "OpenBook"    *> <------ Abrimos la Hoja de cálculo
  32.             USING "Ruta_y_Nombre_Mi_Fichero-Excel.xls"
  33.                   1                *> <------ Aquí el número de hoja que queremos abrir
  34.             RETURNING RETORNO
  35.      END-INVOKE.
  36.  
  37.  
  38.      IF RETORNO NOT = 0
  39.         ADD POW-DMICONERROR POW-DMOK GIVING ESTILO
  40.         INVOKE POW-SELF "DisplayMessage"
  41.                USING "*Error: No exsite la hoja de cálculo ..."
  42.                      "ERROR"
  43.                      ESTILO
  44.         END-INVOKE
  45.         CLOSE FICHERO
  46.         INVOKE POW-SELF "CloseForm"
  47.         EXIT PROGRAM
  48.      END-IF.
  49.  
  50.      MOVE 2 TO LIN.                *> <------ Empezamos en la linea 2, porque suponemos que la 1 contiene el encabezado de las celdas
  51.      PERFORM WITH NO LIMIT
  52.  
  53. *
  54. * Como en PWV, no hay ninguna función, que nos indique el final de los datos en una hoja de cálculo
  55. * vamos a suponer que si la celda nnn:1, vale 0 o está en blanco, hemos llegado al final de la hoja
  56. *
  57. * y empezamos a traspasar los datos, leemos las celdas, y las pasamos directamente a los campos del
  58. * fichero que a continuación grabaremos
  59. *
  60.              MOVE "Numeric" (LIN 1) OF CmExcel1 TO FICCP
  61.  
  62.              IF FICCP = 0
  63.                 EXIT PERFORM
  64.              END-IF
  65.  
  66.              MOVE "Text"    (LIN 2) OF CmExcel1 TO FICPOB
  67.              MOVE "Text"    (LIN 3) OF CmExcel1 TO FICPRO
  68.              MOVE "Text"    (LIN 4) OF CmExcel1 TO FICPAI
  69.  
  70.              WRITE REG_FIC         *> <----- Grabamos los datos en el fichero
  71.                    INVALID KEY     *> <----- Si da error, los regrabamos, por si acaso
  72.                            REWRITE REG_FIC
  73.                                    INVALID KEY     *> Si da error, informamos del número de FILE-STATUS
  74.                                            ADD POW-DMICONERROR POW-DMOK GIVING ESTILO
  75.                                            INVOKE POW-SELF "DisplayMessage"
  76.                                                   USING "Error al Grabar ..."
  77.                                                         STFIC
  78.                                                         ESTILO
  79.                                            END-INVOKE
  80.                            END-REWRITE
  81.              END-WRITE
  82.  
  83.              ADD 1 TO LIN
  84.  
  85.      END-PERFORM.
  86.  
  87.      ADD POW-DMICONINFORMATION POW-DMOK GIVING ESTILO.
  88.  
  89.      INVOKE POW-SELF "DisplayMessage"
  90.             USING "Fin del traspaso ..."
  91.                   " ¡ Atención ... !"
  92.                   ESTILO
  93.      END-INVOKE.
  94.  
  95.      INVOKE CmExcel1 "CloseBook".
  96.      CLOSE FICHERO.

En éste caso, cuando llegue a la línea 17 de la hoja de cálculo, el programa terminará.

Un saludo.-

Socavi 5 de diciembre de 2022 16:40

Buenas tardes Josber: He modificado los campos correspondientes de acuerdo con los ficheros, he compilado y no detecta errores, pero al iniciar el programa y presionar el BT de realizar el traspaso, me da un solo error
Cita:

" The EXCEL Open command cannot be executed"
. deduzco que se trata de una sola instrucción
Código COBOL:
  1.  
  2.  INVOKE CmExcel1 "OpenBook"    *> <------ Abrimos la Hoja de cálculo
  3.              USING "C:\ESCRITORIO\2852.XLS"
  4. *            USING "Ruta_y_Nombre_Mi_Fichero-Excel.xls"
  5.                   1                *> <------ Aquí el número de hoja que queremos abrir
  6.             RETURNING RETORNO
  7.      END-INVOKE.

Lo adjunto porque a mi me parece correcto, pero tal vez no lo es, espero impaciente tus indicaciones. Muchas gracias.

Josber 5 de diciembre de 2022 18:37

Sí, es una sola instrucción. No lo sé seguro @Socavi, porque yo lo tengo siempre instalado pero, creo que tienes que tener instaladas las librerías de Excel, o sea, si no el paquete de Office, sí al menos lo que era el antiguo visor de Excel, no sé seguro si es así, a ver si @Kuk @Nitzer o alguien un poco más versado, puede aclararlo.

Un salu2.-

Socavi 5 de diciembre de 2022 18:45

tengo el paquete de Office, bueno haber si podemos solucionrlo.

fastpho 5 de diciembre de 2022 19:17

Cita:

Citación del post de Socavi (Mensaje 8462)
Buenas tardes Josber: He modificado los campos correspondientes de acuerdo con los ficheros, he compilado y no detecta errores, pero al iniciar el programa y presionar el BT de realizar el traspaso, me da un solo error
" The EXCEL Open command cannot be executed". deduzco que se trata de una sola instrucción
Código COBOL:
  1.  
  2.  INVOKE CmExcel1 "OpenBook"    *> <------ Abrimos la Hoja de cálculo
  3.              USING "C:ESCRITORIO2852.XLS"
  4. *            USING "Ruta_y_Nombre_Mi_Fichero-Excel.xls"
  5.                   1                *> <------ Aquí el número de hoja que queremos abrir
  6.             RETURNING RETORNO
  7.      END-INVOKE.

Lo adjunto porque a mi me parece correcto, pero tal vez no lo es, espero impaciente tus indicaciones. Muchas gracias.

Hola @Socavi seguramente de error por que no existe la carpeta o directorio en tu disco duro C:ESCRITORIO...
Si queres hacer referencia a un archivo que esta ubicado en el
Código:

escritorio
de Windows esta mal la direccion y dara el error
Código:

The EXCEL Open command cannot be executed
Si es asi genera un directorio o carpeta con algun nombre Eje : "Datos" y copia el archivo en la carpeta y las lineas serian
Código COBOL:
  1.     INVOKE CmExcel1 "OpenBook"    *> <------ Abrimos la Hoja de cálculo
  2.              USING "C:Datos2852.XLS"
  3.                   1                *> <------ Aquí el número de hoja que queremos abrir
  4.             RETURNING RETORNO
  5.      END-INVOKE.

Esto debe funcionar
Saludos...

Socavi 6 de diciembre de 2022 10:17

Muchas gracias fastpho, siguiendo tu sugerencia, he abierto la carpeta DATOS y en esta ocasión el programa ha respondido con "fin del traspaso" perfecto !!!

Socavi 6 de diciembre de 2022 16:14

Pero la sorpresa ha sido grande pues me he dado cuenta de que he sido muy optimista ya que a pesar de haber salido el letrero de que se habia realizado el traspaso, no era cierto, unicamente a localizado el fichero, sin haber traspasado ningún dato, es decir que hemos dado un pasito, pero lo mas esencial que serían pasar los datos del Excel al programa, no se ha realizado.

Desde ese momento estoy intentando encontrar el motivo por el cual no se realiza la funcion deseada y solicito de nuevo ayuda al colega que me la pueda prestar. Saludos cordiales.-

Josber 6 de diciembre de 2022 17:48

@Socavi, si no es muy grande la hoja de cálculo, quiero decir, si son menos de 100 ó 200 registros, pon después del
Código COBOL:
  1. ADD 1 TO LIN
un
Código COBOL:
  1. DISPLAY STFIC
o como se llame el FILE-TATUS de tu fichero a ver que te pone, si no es 00, haces una captura de pantalla y la pasas por aquí, que veamos qué número es para saber que pasa

Un salu2.-

- - - Updated - - -

@Socavi, si no es muy grande la hoja de cálculo, quiero decir, si son menos de 100 ó 200 registros, pon después del
Código COBOL:
  1. ADD 1 TO LIN
un
Código COBOL:
  1. DISPLAY STFIC
o como se llame el FILE-TATUS de tu fichero a ver que te pone, si no es 00, haces una captura de pantalla y la pasas por aquí, que veamos qué número es para saber que pasa

Un salu2.-

Socavi 7 de diciembre de 2022 12:41

Muchas gracias por vuestra ayuda, sin vuestras indicaciones no hubiera podido culminar con éxito mi objetivo.

Ahora me queda la tarea de ir pasando datos, que confieso la satisfacción que produce comprobar que se realizan con éxito. Muchas grascias!!!


La franja horaria es GMT +2. Ahora son las 14:46.

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