Gerar arquivo texto com ADVPL

Aprenda como gerar arquivos em texto em ADVPL.

Muitos que estão iniciando na linguagem ADVPL carregam muitas duvidas sobre como trabalhar com arquivo utilizando a linguagem ADVPL. Desta vez vamos ensinar como criar um arquivo no formato texto, e ainda como podemos escrever qualquer coisa dentro deste arquivo.

Primeiramente, como muitos pensam, não é nenhum “bicho de sete cabeças” então se você está iniciando seus estudos em ADVPL, acompanhem este post até o final e aprenda de uma vez por todas como gerar arquivos textos com ADVPL.

  • Gerando o arquivo.
    Costumo criar uma Static Function específica para gerar o arquivo. Nesta função vamos trabalhar com algumas funções reservadas do ADVPL, estas funções são FCREATE, FWRITE e FCLOSE. Estas três trabalham juntas.
    Criaremos uma varável que receberá a função FCreate(), ou seja, passaremos o diretório e o nome do arquivo que queremos criar, por exemplo: FCreate(“Diretorio_qualquer” + “Nome_de_arquivo.txt”)
    Em seguida utilizaremos um While para escrever neste arquivo, a função responsável por “escrever” no arquivo é a FWrite. Como o proprio nome ja informa, ela vai escrever dados específicos dentro do seu arquivo, onde a sintaxe será a seguinte: FWrite(nHandle, “Escrita”), onde “nHandle” nada mais é que um valor numérico que recebe ZERO ou UM, caso esteja tudo certo, ou seja, o FCreate funcionou certinho, o valor de nHandle será diferente de ZERO, pois o arquivo especificado existirá no diretório especificado. Neste caso, podemos usar o FWarite para escrever nele.
    Por ultimo vamos ver o FClose, este é ainda mais simples, ele fecha o arquivo que foi aberto para escrita, apenas isto. Pronto, seu arquivo foi criado e manipulado conforme desejado. Claro que apenas com este tipo de explicação superficial, pode ficar um pouco dificil de entender, mas não se preocupe, deixarei o código prontinho para você estudar e praticar em sua máquina. Dei total atenção para estas três funções por que são elas as responsáveis por trabalhar com abertura e escrita de arquivos no ADVPL
Include 'Protheus.ch'

//{Protheus.doc} reltxt Exemplo de escrita em arquivo texto utilizando advpl @type function @author RCTI Treinamentos @since 2019 @version 1.0 @example (examples) @see www.rctitreinamentos.com.br //
User Function RelTxt()

If MsgYesNo("Esta função tem como objetivo gerar arquivo TXT")

Processa({||MntQry() },,"Processando...")
MsAguarde({ || GeraArq()},,"O arquivo TXT está sendo gerado...")

Elsert("Cancelada pelo Operador")
EndIf

Return Nil

/** Função que gera o arquivo TXT **/
Static Function GeraArq()

Local cDir := "C:\TOTVS 12\Microsiga\protheus_data\treport\"
Local cArq := "arquivo2.txt"
Local nHandle := FCreate(cDir+cArq)

If nHandle < 0 
    MsgAlert("Erro ao criar o arquivo", "ERRO")

Else
    While TMP->(!EOF())

    FWrite(nHandle, TMP->(FILIAL)+ " | " + TMP->(CODIGO) + " | " + TMP->(DESCRICAO) + CRLF)
    TMP->(dbSkip())

    EndDo

/*
    For nLinha := 1 to 200
        FWrite(nHandle,"Gravando a linha " + StrZero(nLinha,3)+ CRLF)
    Next nLinha
    //
    **/
    FClose(nHandle)

EndIf

If FILE("C:\TOTVS 12\Microsiga\protheus_data\treport\arquivo2.txt")
    MsgInfo("Arquivo criado com sucesso!")
Else
    MsgAlert("Não foi possivel criar o arquivo", "ALERTA")
EndIf

dbSelectArea("TMP")
dbCloseArea("TMP")

Return

Deixe uma resposta