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
.
Última edición por Josber fecha: 7 de abril de 2020 a las 19:04.
Han dicho Gracias: 5
Kuk ( 7 de abril de 2020),
Paulo (14 de abril de 2020),
Roger ( 3 de mayo de 2020),
Socavi (12 de marzo de 2021),
Tigre ( 9 de abril de 2020)
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.
Qué raro, porque está creado y compilado ahí, dime cuál es el error que te da, a ver si le sacamos punta.
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.
¡¡¡ 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í.
Socavi, Josber, cuál es el problema exactamente con las decimales ? No caigo
NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ¿Te han ayudado?NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
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.
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.
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)
Pero eso te va a pasar igual si soportase 4, 6 o 20 decimales, ¿no?
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.