Monday, December 1, 2014

Leyendo un archivo delimitado por comas

En este pequeño post vamos a mostrar como se puede leer un archivo de texto desde Ax.

    01 Dialog              dialog      = new Dialog();
    02 DialogField     fileField   = dialog.addField(typeId(FileNameOpen), "@SYS53125");
    03 TextIO             textIO;
    04 FileName        fileName;
    05 container         fileLine;
    06 #File
    07 ;
    08
    09 try
    10 {
    11   dialog.caption(strFmt("Leer archivo separado por comas"));
    12   dialog.windowType(FormWindowType::PopUp);
    13   dialog.run();
    14
    15   fileName = fileField.value();
    16   
    17   new FileIoPermission(filename, #io_read).assert();
    18
    19    if (dialog.closedOk() && fileName)
    20   {
    21        textIo = new TextIo(filename, #io_read);
    22
    23        if (!textIo)
    24            throw Exception::Error;
    25
    26        textIo.inRecordDelimiter(#delimiterCRLF);
    27        textIo.inFieldDelimiter(",");
    28
    29       while (textIo.status() == IO_Status::Ok)
    30        {
    31            fileLine = textIo.read();
    32           if (conLen(fileLine))
    33            {
    34               
    35                info (conPeek(fileLine, 1) +" " + conPeek(fileLine, 2)+ " " + conPeek(fileLine, 3));
    36            }
    37        }
    38
    39    }
    40 }
    41 catch(Exception::Error)
    42 {
    43   throw(error("Rayos!! Algún error ha ocurrido aquí!"));
    44 }
    45 CodeAccessPermission::revertAssert();



De la línea 01 a la 06 las declaraciones, de la línea 11 a 13 construyo y muestro el dialogo para abrir el archivo, en la línea 17 solicitamos el permiso para leer el archivo... ¿Qué creían? ¿Que nos mandabamos solos?, pues no, hasta para leer se requiere solicitar el permiso.

Inicializamos la clase TextIOm en la línea 21, la linea 26 define el delimitador del registro, y en la 27 el delimitador del campo, alias (,).

En la línea 29 inicia nuestro ciclo de lectura, y utilizamos conPeek para obtener las "columnas" o "campos".

Y en la línea 45, más tareas de permisos.

Aqui les dejo unas pantallas.

El origen de datos:


El dialogo leyendo el archivo origen de datos (*.CSV)




El resultado:






No comments:

Post a Comment