![]() |
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 . |
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. |
Cita:
Cita:
Cita:
Un saludo.- |
Socavi, Josber, cuál es el problema exactamente con las decimales ? No caigo :piensa:
|
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. |
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. |
Cita:
Socavi, ¿Tienes instalado Excel, ¿no?, (no vale uno compatible tipo LibreOficce o por el estilo, tiene que ser Microsoft Excel) Cita:
Un salu2.- |
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... |
1 Archivos Adjunto(s)
Josber,
El 'paquete' corresponde a Microsoft Office 2.019. con toda seguridad, saludos cordiales Archivo Adjunto 538 |
Cita:
Un saludo.- |
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.
|
Cita:
Saludos |
Cita:
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.- |
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. |
Cita:
Un saludo.- |
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). |
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.- |
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. |
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. |
Cita:
Código COBOL:
Un salu2.- |
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 |
@Socavi, Perdona, no entiendo exactamente qué es lo que necesitas, ¿pasar de Excel a programa o al revés?
Un salu2.- |
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 |
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
|
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.- |
No se utilizarlo Josber, pero muchas gracias.
Esto que acompaño, no me funciona, pero quisiera algo así: Código COBOL:
|
@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.- |
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... |
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. |
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 |
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:
En éste caso, cuando llegue a la línea 17 de la hoja de cálculo, el programa terminará. Un saludo.- |
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:
Código COBOL:
Lo adjunto porque a mi me parece correcto, pero tal vez no lo es, espero impaciente tus indicaciones. Muchas gracias. |
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.- |
tengo el paquete de Office, bueno haber si podemos solucionrlo.
|
Cita:
Si queres hacer referencia a un archivo que esta ubicado en el Código:
escritorioCódigo:
The EXCEL Open command cannot be executedCódigo COBOL:
Esto debe funcionar Saludos... |
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 !!!
|
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.- |
@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:
Código COBOL:
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:
Código COBOL:
Un salu2.- |
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.