Ola a todos,

Como meu primeiro post aqui, gostaria de lhes apresentar uma classe criada para facilitar nosso trabalho quando precisamos exportar dados para arquivos *.txt (tamanho fixo).

Esta classe trabalha como um buffer, armazenando as informações em seu objeto, construindo todo e texto e inserindo-o no arquivo de uma unica vez.
Existem outras funcionalidades dentro da classe, mas acredito que a mesma esteja bem documentada.

Segue um exemplo da classe em uso:

static void ExportInvoices_JAN(Args _args)
{
    #File
 
    CustInvoiceJour custInvoiceJour;
    CustTable       custTable;
 
    StringBuilder   strBuilder = new StringBuilder();
    TextIO          textIO     = new TextIO("C:\\Teste_StringBuild.txt",#io_write);
 
    Counter         counterLine = 1;
    ;
 
    while
    select custInvoiceJour
        index InvoiceNumIdx
        where custInvoiceJour.InvoiceDate == mkdate(1,1,2011) &&
                 custInvoiceJour.InvoiceDate == mkdate(31,1,2011)
    join custTable
        where custTable.AccountNum == custInvoiceJour.InvoiceAccount
    {
        strBuilder.insertField(custTable.AccountNum,counterLine,1,20);
        strBuilder.insertField(custTable.Name,counterLine,21,60);
        strBuilder.insertField(custInvoiceJour.InvoiceId,counterLine,81,20);
        strBuilder.insertField(custInvoiceJour.InvoiceDate,counterLine,101,10);
        strBuilder.insertField(custInvoiceJour.LedgerVoucher,counterLine,111,20);
 
        counterLine++;
    }
 
    textIO.write(strBuilder.getText());
}

A classe se encontra aqui.

Espero que tenham gostado.

Abs,
Anderson Joyle