Exportar para TXT (Sem Rótulos - No Labels)

    Olá pessoal,

     

    Vi algumas dúvidas intrigantes, fazer um store para arquivo texto sem os rótulos (no labels) e sem separador.

     

    Após algumas pesquisas e testes, resolvi juntar as ideias encontradas e criei o arquivo anexo.

     

    Link onde encontrei a ideia principal: Store do not write the header "no labels"

    Link da dúvida: Store .txt sem labels

     

    Para quem usa Personal Edition, segue script:

    ///$tab SUB

    SUB ExportaParaTXT(vTable,vPath)

     

        /*************************************/

        // Desenvolvido por Aderlan Rodrigues

        // Curitiba, 15 de junho de 2016

        /*************************************/

     

        IF '$(vPath)' <> '' and  Right('$(vPath)',1) <> '\' then // se não tiver a barra no final do caminho será incluída

            SET vPath = '$(vPath)\';

        ENDIF

     

        LET vLabel =;

        LET vDados = 'LABEL AS ['; // Recebe a primeira linha de dados que será substituido no store

      

        FOR i = 1 to NoOfFields('$(vTable)') // Junta os campos em um só para exportação sem separador

      

            IF $(i) < NoOfFields('$(vTable)') then

                LET vLabel = '$(vLabel)'&FieldName($(i),'$(vTable)')&'&';

                LET vDados = '$(vDados)'&Peek(FieldName($(i),'$(vTable)'),0,'$(vTable)');

            ELSE

                LET vLabel = '$(vLabel)'&FieldName($(i),'$(vTable)')&' AS LABEL';

                LET vDados = '$(vDados)'&Peek(FieldName($(i),'$(vTable)'),0,'$(vTable)')&']';

            ENDIF

      

        NEXT i

     

        // Carrega sem a primeira linha

        Gravar:

        LOAD $(vLabel) Resident $(vTable) Where RecNo() > 1;

     

        IF NoOfRows('Gravar') > 0 then

            STORE $(vDados) from Gravar into [$(vPath)$(vTable).txt] (txt, delimiter is ' ');

        ELSE

            TRACE ## AVISO: Nenhuma linha carregada, o arquivo texto não foi gravado;

        ENDIF

      

        DROP Table Gravar;

      

        // Limpa variáveis

        LET i =;

        LET vLabel =;

        LET vDados =;

     

    END Sub

     

    ///$tab Exemplo de Uso

    ASCII:

    LOAD RowNo() as ID,

        Chr(RecNo()) as AsciiAlpha,

        RecNo() as AsciiNum,

        Rand()*Pi() as ComVirgula,

        Replace(Rand()*Pi(),',','.') as ComPonto

    AutoGenerate 255

    Where (RecNo()>=48 and RecNo()<=126) or RecNo()>=160;

     

    // Usando caminho relativo para gravar o arquivo

    CALL ExportaParaTXT('ASCII');

     

    // Usando caminho específico para gravar o arquivo

    CALL ExportaParaTXT('ASCII','C:\TEMP\');