Cuantas veces hemos querido bajar información desde el as400 a la Pc., tablas, reportes, etc. Para manipular la información con Excel.
Si deseamos pasar un archivo a una tabla Excel, hay diversas maneras de hacerlo. Haciendo uso del Transfer del Client Access, particularmente no lo uso. También podemos pasarlo por un archivo plano y al bajarlo a la PC lo “mapeamos” por posiciones desde Excel, pero se complica al tratar con datos numéricos con decimales y/o con signos.
Prefiero utilizar el comando CPYTOIMPF, copiando la información a un archivo plano y bajarlo a la PC. (vía ftp)
Aquí les dejo un ejemplo.
Estructura del archivo CLIENTES
- El campo TARCLI es carácter de 16 posiciones
PRIMER PASO
Creamos el archivo plano que contendrá la información y que se transmitirá por ftp a la PC.
== > CRTPF FILE(MILIBRERIA/PLANO) RCDLEN(500) SIZE(*NOMAX)
== > CRTPF FILE(MILIBRERIA/PLANO) RCDLEN(500) SIZE(*NOMAX)
La longitud de registro del archivo original (CLIENTES) es 87 posiciones, ¿Por qué creo un archivo de 500 de longitud? Mas adelante se explica.
SEGUNDO PASO
Copiamos la información del archivo (con DDS) al archivo plano haciendo uso del comando
== > CPYTOIMPF FROMFILE(MILIBRERIA/CLIENTES) TOFILE(MILIBRERIA /PLANO) MBROPT(*REPLACE) FLDDLM(';')
Hay parámetros que tienen su valor por defecto, dejemoslo como están.
En el parámetro FLDDLM se indicará el carácter que será el separador de cada campo. Eso hará posible que el Excel separe en cada celda los datos delimitados por el carácter que indiquemos, en el ejemplo “;”
Por que creamos un archivo plano de 500 de longitud si mi archivo CLIENTES solo tiene 87 posiciones? Pues justamente para asegurarme que esos caracteres delimitadores también se copien en el archivo plano. Ya que estos, al ser incluidos en la copia, harán que el registro sea mayor al tamaño de registro original. De lo contrario se truncaran los datos, mostrando el siguiente mensaje:
En nuestro escritorio aparecerá un icono asi
El archivo se depositó en la PC en formato .CSV (Delimitado por comas)
En el caso del dato RUC si posicionamos el cursor en la celda, veremos que mantiene su valor original, solo bastará ajustar el tamaño de la celda
Y para el dato TARJETA? Al parecer no es asi.
No muestra el dato original, Excel redondea el ultimo digito con cero.
Para evitar esto y otros errores que se puedan presentar , desde el ftp, bajar el archivo en formato texto (.txt) luego abrirlo con el Excel e indicar en el cuadro para importar texto que el dato Tarjeta sea de tipo texto.
Aquí indicamos que el dato de Tarjeta sea de tipo texto.
Usando el transfer del Client Access tenía problemas con los datos que contenian números de 16 digitos. El último digito lo ponía a cero.
Hago toda esta operación, mayormente, cuando se trata de información que contenga datos numéricos mayores a 10 dígitos. No es tan rápido pero al menos estaré seguro que la información bajó al excel de manera completa y correcta.
== > CPYTOIMPF FROMFILE(MILIBRERIA/CLIENTES) TOFILE(MILIBRERIA /PLANO) MBROPT(*REPLACE) FLDDLM(';')
Hay parámetros que tienen su valor por defecto, dejemoslo como están.
En el parámetro STRDLM se debe indicar el carácter que será el delimitador de cada dato. O sea nos dice donde empieza y termina cada dato. Por defecto tiene el carácter comillas.
En el parámetro FLDDLM se indicará el carácter que será el separador de cada campo. Eso hará posible que el Excel separe en cada celda los datos delimitados por el carácter que indiquemos, en el ejemplo “;”
Por que creamos un archivo plano de 500 de longitud si mi archivo CLIENTES solo tiene 87 posiciones? Pues justamente para asegurarme que esos caracteres delimitadores también se copien en el archivo plano. Ya que estos, al ser incluidos en la copia, harán que el registro sea mayor al tamaño de registro original. De lo contrario se truncaran los datos, mostrando el siguiente mensaje:
Se han truncado datos en una operación de entrada, salida o actualización.
TERCER PASO
Seguidamente pasamos, vía ftp, el archivo plano a la PC.
En nuestro escritorio aparecerá un icono asi
El archivo se depositó en la PC en formato .CSV (Delimitado por comas)
Este tipo de extensión lo reconoce el Excel y lo edita automáticamente, separando en cada celda los datos con el carácter que indicamos en el parámetro FLDDLM. Con eso ya tenemos la información en una tabla Excel.
Importante:
Importante:
¿Que pasa con los datos de los campos RUC y TARJETA? El Excel no lo muestra completamente.
En el caso del dato RUC si posicionamos el cursor en la celda, veremos que mantiene su valor original, solo bastará ajustar el tamaño de la celda
Y para el dato TARJETA? Al parecer no es asi.
No muestra el dato original, Excel redondea el ultimo digito con cero.
Para evitar esto y otros errores que se puedan presentar , desde el ftp, bajar el archivo en formato texto (.txt) luego abrirlo con el Excel e indicar en el cuadro para importar texto que el dato Tarjeta sea de tipo texto.
En este punto indicamos que carácter será delimitador y separe los datos en cada celda. En nuestro ejemplo es el carácter “;”
Aquí indicamos que el dato de Tarjeta sea de tipo texto.
Usando el transfer del Client Access tenía problemas con los datos que contenian números de 16 digitos. El último digito lo ponía a cero.
Hago toda esta operación, mayormente, cuando se trata de información que contenga datos numéricos mayores a 10 dígitos. No es tan rápido pero al menos estaré seguro que la información bajó al excel de manera completa y correcta.
No hay comentarios:
Publicar un comentario