×
Linguagem de Programação ADVPL
Perguntas Gerar arquivo TXT
- lalberto
- Autor do Tópico
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
12 anos 11 meses atrás #115
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Gerar arquivo TXT foi criado por lalberto
Bom dia Srs. Programadores,
Por acaso algum de vocês tem um modelo pronto de programa para gerar um arquivo TXT usando fwrite, buffer,etc...etc...?
Agradeço antecipadamente a ajuda.
Por acaso algum de vocês tem um modelo pronto de programa para gerar um arquivo TXT usando fwrite, buffer,etc...etc...?
Agradeço antecipadamente a ajuda.
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Autor do Tópico
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
12 anos 11 meses atrás #116
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Re: Gerar arquivo TXT
Utilizando o Assistente de código do Ide voce terá uma função padrão que utiliza estes comandos pronta pra uso, somente inserindo os campos que desejar.
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- deividramos
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 1
- Obrigados Recebidos: 0
11 anos 6 meses atrás #14065
por deividramos
Respondido por deividramos no tópico Gerar arquivo TXT
Bom dia Luiz
Não entendo muito de Programação, mais da uma verificada se isso o ajudaria
Foi montado por mim quando é feito pedido envia um email e gera um txt
Private nTotPedido := 0
Private oOrcamento := ''
Private cCNPJ :=''
Private emailcli := ''
Private nTamLin := 240
Private cLin
Private cArqTxt
Private cAnexo
Private nHdl
Private emailDestino
Private TEXT := ''
Private cTipo := ''
Private cTime :=''
//Private Treport :=''
//Private oReport:=''
//Treport (oReport:= TReport():New() ...)
//oreport:nfontbody:=7
//oreport:cfontbody:="Arial"
//Pega o email do cliente no SA1
emailcli := SA1->A1_EMAILNF
//verificar se é pedido ou orçamento
IF M->C5_ORCAM = 'N'
oOrcamento:= "PEDIDO "
ELSE
oOrcamento:= "ORCAMENTO "
ENDIF
cHtml := '<html>'
cHtml += '<head><title>' + M->C5_NUM + '</title></head>'
If INCLUI
cSubject := "Seu " + oOrcamento + M->C5_NUM + " foi INCLUIDO em nosso sistema "// + foi incluido em DATA E HORA em nosso sistema
Else
cSubject := "Seu " + oOrcamento + M->C5_NUM + " foi ALTERADO em nosso sistema "// + foi incluido em DATA E HORA em nosso sistema
endif
cHtml += '<body bgcolor=white text=black ><br><font size="2" face="Courier New">'
cHtml += "Nome do Cliente : " + SA1->A1_NOME + '<br>'
cHtml += "Codigo do Cliente : " + SA1->A1_COD + '<br>'
cHtml += "Codigo loja : " + SA1->A1_LOJA + '<br>'
cHtml += "Nome vendedor : " + SA3->A3_NOME + '<br>'
cHtml += '<br>'
cHtml += '</body>'
//Msg lista de produtos
cHtml += '<body bgcolor=white text=black ><br><font size="3" face="Courier New">'
cHtml += "Segue em anexo lista de produtos" + '<br>'
cHtml += '</body>'
cHtml += '</html>'
For I := 1 to Len(Acols) // Lendo itens do pedido
If I == 1
//Fazer if se for alteração.
CriaArqTxt() //Cria arquivo texto
// DEFINE FONT oFont NAME "Courier New" SIZE 0,-16
cLin := ''
cLin := Space(nTamLin) // Variavel para criacao da linha do registros para gravacao
cTipo := cSubject
cLin := oreport'asdfasdfas'
cLin := Stuff(cLin,01,100,''+ cTipo)//Mensagem no inicio do arquivo
cLin += CRLF
If fWrite(nHdl,cLin,Len(cLin)) != Len(cLin)
If !MsgAlert("Ocorreu um erro na gravacao do arquivo. Continua?","Atencao!")
Return .f.
Endif
Endif
cLin := ''
cData := DATE() // Resultado: Data
cData := DTOC(DATE())
cData := DTOC(DATE()) // Resultado: Today is 09/01/90
cTime := TIME() // Resultado: Horario 10:37:17
cLin := Stuff(cLin,01,100,'Emissão na data : ' + cData + ' horário : ' + cTime)
cLin += CRLF
If fWrite(nHdl,cLin,Len(cLin)) != Len(cLin)
If !MsgAlert("Ocorreu um erro na gravacao do arquivo. Continua?","Atencao!")
Return .f.
Endif
Endif
cLin := ''
cLin := Stuff(cLin,01,60,'Nome do Cliente : ' + SA1->A1_NOME)
cLin += CRLF
If fWrite(nHdl,cLin,Len(cLin)) != Len(cLin)
If !MsgAlert("Ocorreu um erro na gravacao do arquivo. Continua?","Atencao!")
Return .f.
Endif
Endif
cLin := ''
cCNPJ := Transform(SA1->A1_CGC,'@R 99.999.999/9999-99')
cLin := Stuff(cLin,01,30,'CNPJ: ' + cCNPJ)
cLin += CRLF
If fWrite(nHdl,cLin,Len(cLin)) != Len(cLin)
If !MsgAlert("Ocorreu um erro na gravacao do arquivo. Continua?","Atencao!")
Return .f.
Endif
Endif
cLin := ''
// cLin := Stuff(cLin,01,60,'Nome do Cliente : ' + SA1->A1_NOME)
// cLin += CRLF
cLin := Stuff(cLin,01,06,'Codigo do Cliente : ' + SA1->A1_COD)
cLin += CRLF
cLin := Stuff(cLin,60,02,'Número da Loja : ' + SA1->A1_LOJA)
cLin += CRLF
If fWrite(nHdl,cLin,Len(cLin)) != Len(cLin)
If !MsgAlert("Ocorreu um erro na gravacao do arquivo. Continua?","Atencao!")
Return .f.
Endif
Endif
Dbselectarea("SA4")
Dbsetorder(1)
Dbseek(xFilial("SA4") + M->C5_TRANSP, .T.)
cLin := ''
cLin := Stuff(cLin,01,60,'Nome da Transportadora : ' + SA4->A4_NOME)
cLin += CRLF
Dbclosearea("SA4")
If fWrite(nHdl,cLin,Len(cLin)) != Len(cLin)
If !MsgAlert("Ocorreu um erro na gravacao do arquivo. Continua?","Atencao!")
Return .f.
Endif
Endif
cLin := ''
cLin += CRLF
If fWrite(nHdl,cLin,Len(cLin)) != Len(cLin)
If !MsgAlert("Ocorreu um erro na gravacao do arquivo. Continua?","Atencao!")
Return .f.
Endif
Endif
cLin := ''
cLin := Space(nTamLin) // Variavel para criacao da linha do registros para gravacao
cLin := Stuff(cLin,01,03,'SEQ')
cLin := Stuff(cLin,05,06,'CODIGO')
cLin := Stuff(cLin,13,40,'DESCRIÇÃO')
cLin := Stuff(cLin,60,02,'UN')
cLin := Stuff(cLin,66,10,'QUANT')
cLin := Stuff(cLin,77,10,'VAL.UNIT')
cLin := Stuff(cLin,89,10,'VAL.TOT')
cLin := Stuff(cLin,100,8,'NCM')
cLin := Stuff(cLin,110,8,'IPI')
cLin += CRLF
If fWrite(nHdl,cLin,Len(cLin)) != Len(cLin)
If !MsgAlert("Ocorreu um erro na gravacao do arquivo. Continua?","Atencao!")
Return .f.
Endif
Endif
Endif
If aCols[I,Len(aHeader)+1] == .F.//testo se esta deletado .t. eh deletado
dbSelectArea('SB1')
dbSetOrder(1)
Dbseek(xFilial("SB1") + substr(aCols[I,2],1,6), .T.)
cLin := ''
cLin := Space(nTamLin)
cSeq := aCols[I,1]
cLin := Stuff(cLin,01,03,substr(cSeq,1,03)) //cLin,01,03,'SEQ'
cCod := aCols[I,2]
cLin := Stuff(cLin,05,06,substr(cCod,1,06)) //cLin,05,06,'CODIGO'
cDesc:= (aCols[I,3])
cLin := Stuff(cLin,13,40,substr(cDesc,1,40)) //cLin,13,60,'DESCRIÇÃO'
cUn := (aCols[I,4])
cLin := Stuff(cLin,60,02,substr(cUn,1,02)) //cLin,65,02,'UN'
cQtdven := Transform(aCols[I,5], "@E 999,999.999")
cLin := Stuff(cLin,62,10,cQtdven,1,10)
cValUnit := Transform(aCols[I,6], "@E 999,999.99")//STR(aCols[I,6])
cLin := Stuff(cLin,74,10,cValUnit)
cValTot := Transform(aCols[I,7], "@E 999,999.99")
cLin := Stuff(cLin,87,10,cValTot)
cLin := Stuff(cLin,100,08,SB1->B1_POSIPI)
cIPI := Transform(SB1->B1_IPI, "@E 99")
cLin := Stuff(cLin,110,02,cIPI)
// cLin := Stuff(cLin,114,02,'17')
// cLin += CRLF
nTotPedido := nTotPedido + (aCols[I,7])
// nTotPedido += (aCols[I,7] * (1 +(SB1->B1_IPI / 100)))
cLin += CRLF
//nTotPedido += (aCols[I,7] * (1 +(SB1->B1_IPI / 100)))
If fWrite(nHdl,cLin,Len(cLin)) != Len(cLin)
If !MsgAlert("Ocorreu um erro na gravacao do arquivo. Continua?","Atencao!")
Return .f.
Endif
Endif
Endif
next
cLin := ''
cLin := Space(nTamLin)
cLin += CRLF
cLin += CRLF
cLin := Stuff(cLin,01,20,'Total do Pedido: ' + Transform(nTotPedido, "@E 999,999.99"))
If fWrite(nHdl,cLin,Len(cLin)) != Len(cLin)
If !MsgAlert("Ocorreu um erro na gravacao do arquivo. Continua?","Atencao!")
Return .f.
Endif
Endif
cDestino := emailcli // + ';'
cAnexo := GetSrvProfString("Startpath","") + "pedido\" + ALLTRIM( M->C5_NUM) + ".TXT"
fClose(nHdl)
U_JACFMail(cDestino, cSubject, cHtml, cAnexo) //cArqTxt
fErase(cAnexo)
Return
******************************************************************
Static Function CriaArqTxt()
cArqTxt := GetSrvProfString("Startpath","") + "pedido\" + ALLTRIM(M->C5_NUM) + ".TXT"
nHdl := fCreate(cArqTxt)
If nHdl == -1
MsgAlert("O arquivo de nome "+cArqTxt+" nao pode ser criado! ","Atencao!")
Return
Endif
Return
*****************************************************************
Abraço
Não entendo muito de Programação, mais da uma verificada se isso o ajudaria
Foi montado por mim quando é feito pedido envia um email e gera um txt
Private nTotPedido := 0
Private oOrcamento := ''
Private cCNPJ :=''
Private emailcli := ''
Private nTamLin := 240
Private cLin
Private cArqTxt
Private cAnexo
Private nHdl
Private emailDestino
Private TEXT := ''
Private cTipo := ''
Private cTime :=''
//Private Treport :=''
//Private oReport:=''
//Treport (oReport:= TReport():New() ...)
//oreport:nfontbody:=7
//oreport:cfontbody:="Arial"
//Pega o email do cliente no SA1
emailcli := SA1->A1_EMAILNF
//verificar se é pedido ou orçamento
IF M->C5_ORCAM = 'N'
oOrcamento:= "PEDIDO "
ELSE
oOrcamento:= "ORCAMENTO "
ENDIF
cHtml := '<html>'
cHtml += '<head><title>' + M->C5_NUM + '</title></head>'
If INCLUI
cSubject := "Seu " + oOrcamento + M->C5_NUM + " foi INCLUIDO em nosso sistema "// + foi incluido em DATA E HORA em nosso sistema
Else
cSubject := "Seu " + oOrcamento + M->C5_NUM + " foi ALTERADO em nosso sistema "// + foi incluido em DATA E HORA em nosso sistema
endif
cHtml += '<body bgcolor=white text=black ><br><font size="2" face="Courier New">'
cHtml += "Nome do Cliente : " + SA1->A1_NOME + '<br>'
cHtml += "Codigo do Cliente : " + SA1->A1_COD + '<br>'
cHtml += "Codigo loja : " + SA1->A1_LOJA + '<br>'
cHtml += "Nome vendedor : " + SA3->A3_NOME + '<br>'
cHtml += '<br>'
cHtml += '</body>'
//Msg lista de produtos
cHtml += '<body bgcolor=white text=black ><br><font size="3" face="Courier New">'
cHtml += "Segue em anexo lista de produtos" + '<br>'
cHtml += '</body>'
cHtml += '</html>'
For I := 1 to Len(Acols) // Lendo itens do pedido
If I == 1
//Fazer if se for alteração.
CriaArqTxt() //Cria arquivo texto
// DEFINE FONT oFont NAME "Courier New" SIZE 0,-16
cLin := ''
cLin := Space(nTamLin) // Variavel para criacao da linha do registros para gravacao
cTipo := cSubject
cLin := oreport'asdfasdfas'
cLin := Stuff(cLin,01,100,''+ cTipo)//Mensagem no inicio do arquivo
cLin += CRLF
If fWrite(nHdl,cLin,Len(cLin)) != Len(cLin)
If !MsgAlert("Ocorreu um erro na gravacao do arquivo. Continua?","Atencao!")
Return .f.
Endif
Endif
cLin := ''
cData := DATE() // Resultado: Data
cData := DTOC(DATE())
cData := DTOC(DATE()) // Resultado: Today is 09/01/90
cTime := TIME() // Resultado: Horario 10:37:17
cLin := Stuff(cLin,01,100,'Emissão na data : ' + cData + ' horário : ' + cTime)
cLin += CRLF
If fWrite(nHdl,cLin,Len(cLin)) != Len(cLin)
If !MsgAlert("Ocorreu um erro na gravacao do arquivo. Continua?","Atencao!")
Return .f.
Endif
Endif
cLin := ''
cLin := Stuff(cLin,01,60,'Nome do Cliente : ' + SA1->A1_NOME)
cLin += CRLF
If fWrite(nHdl,cLin,Len(cLin)) != Len(cLin)
If !MsgAlert("Ocorreu um erro na gravacao do arquivo. Continua?","Atencao!")
Return .f.
Endif
Endif
cLin := ''
cCNPJ := Transform(SA1->A1_CGC,'@R 99.999.999/9999-99')
cLin := Stuff(cLin,01,30,'CNPJ: ' + cCNPJ)
cLin += CRLF
If fWrite(nHdl,cLin,Len(cLin)) != Len(cLin)
If !MsgAlert("Ocorreu um erro na gravacao do arquivo. Continua?","Atencao!")
Return .f.
Endif
Endif
cLin := ''
// cLin := Stuff(cLin,01,60,'Nome do Cliente : ' + SA1->A1_NOME)
// cLin += CRLF
cLin := Stuff(cLin,01,06,'Codigo do Cliente : ' + SA1->A1_COD)
cLin += CRLF
cLin := Stuff(cLin,60,02,'Número da Loja : ' + SA1->A1_LOJA)
cLin += CRLF
If fWrite(nHdl,cLin,Len(cLin)) != Len(cLin)
If !MsgAlert("Ocorreu um erro na gravacao do arquivo. Continua?","Atencao!")
Return .f.
Endif
Endif
Dbselectarea("SA4")
Dbsetorder(1)
Dbseek(xFilial("SA4") + M->C5_TRANSP, .T.)
cLin := ''
cLin := Stuff(cLin,01,60,'Nome da Transportadora : ' + SA4->A4_NOME)
cLin += CRLF
Dbclosearea("SA4")
If fWrite(nHdl,cLin,Len(cLin)) != Len(cLin)
If !MsgAlert("Ocorreu um erro na gravacao do arquivo. Continua?","Atencao!")
Return .f.
Endif
Endif
cLin := ''
cLin += CRLF
If fWrite(nHdl,cLin,Len(cLin)) != Len(cLin)
If !MsgAlert("Ocorreu um erro na gravacao do arquivo. Continua?","Atencao!")
Return .f.
Endif
Endif
cLin := ''
cLin := Space(nTamLin) // Variavel para criacao da linha do registros para gravacao
cLin := Stuff(cLin,01,03,'SEQ')
cLin := Stuff(cLin,05,06,'CODIGO')
cLin := Stuff(cLin,13,40,'DESCRIÇÃO')
cLin := Stuff(cLin,60,02,'UN')
cLin := Stuff(cLin,66,10,'QUANT')
cLin := Stuff(cLin,77,10,'VAL.UNIT')
cLin := Stuff(cLin,89,10,'VAL.TOT')
cLin := Stuff(cLin,100,8,'NCM')
cLin := Stuff(cLin,110,8,'IPI')
cLin += CRLF
If fWrite(nHdl,cLin,Len(cLin)) != Len(cLin)
If !MsgAlert("Ocorreu um erro na gravacao do arquivo. Continua?","Atencao!")
Return .f.
Endif
Endif
Endif
If aCols[I,Len(aHeader)+1] == .F.//testo se esta deletado .t. eh deletado
dbSelectArea('SB1')
dbSetOrder(1)
Dbseek(xFilial("SB1") + substr(aCols[I,2],1,6), .T.)
cLin := ''
cLin := Space(nTamLin)
cSeq := aCols[I,1]
cLin := Stuff(cLin,01,03,substr(cSeq,1,03)) //cLin,01,03,'SEQ'
cCod := aCols[I,2]
cLin := Stuff(cLin,05,06,substr(cCod,1,06)) //cLin,05,06,'CODIGO'
cDesc:= (aCols[I,3])
cLin := Stuff(cLin,13,40,substr(cDesc,1,40)) //cLin,13,60,'DESCRIÇÃO'
cUn := (aCols[I,4])
cLin := Stuff(cLin,60,02,substr(cUn,1,02)) //cLin,65,02,'UN'
cQtdven := Transform(aCols[I,5], "@E 999,999.999")
cLin := Stuff(cLin,62,10,cQtdven,1,10)
cValUnit := Transform(aCols[I,6], "@E 999,999.99")//STR(aCols[I,6])
cLin := Stuff(cLin,74,10,cValUnit)
cValTot := Transform(aCols[I,7], "@E 999,999.99")
cLin := Stuff(cLin,87,10,cValTot)
cLin := Stuff(cLin,100,08,SB1->B1_POSIPI)
cIPI := Transform(SB1->B1_IPI, "@E 99")
cLin := Stuff(cLin,110,02,cIPI)
// cLin := Stuff(cLin,114,02,'17')
// cLin += CRLF
nTotPedido := nTotPedido + (aCols[I,7])
// nTotPedido += (aCols[I,7] * (1 +(SB1->B1_IPI / 100)))
cLin += CRLF
//nTotPedido += (aCols[I,7] * (1 +(SB1->B1_IPI / 100)))
If fWrite(nHdl,cLin,Len(cLin)) != Len(cLin)
If !MsgAlert("Ocorreu um erro na gravacao do arquivo. Continua?","Atencao!")
Return .f.
Endif
Endif
Endif
next
cLin := ''
cLin := Space(nTamLin)
cLin += CRLF
cLin += CRLF
cLin := Stuff(cLin,01,20,'Total do Pedido: ' + Transform(nTotPedido, "@E 999,999.99"))
If fWrite(nHdl,cLin,Len(cLin)) != Len(cLin)
If !MsgAlert("Ocorreu um erro na gravacao do arquivo. Continua?","Atencao!")
Return .f.
Endif
Endif
cDestino := emailcli // + ';'
cAnexo := GetSrvProfString("Startpath","") + "pedido\" + ALLTRIM( M->C5_NUM) + ".TXT"
fClose(nHdl)
U_JACFMail(cDestino, cSubject, cHtml, cAnexo) //cArqTxt
fErase(cAnexo)
Return
******************************************************************
Static Function CriaArqTxt()
cArqTxt := GetSrvProfString("Startpath","") + "pedido\" + ALLTRIM(M->C5_NUM) + ".TXT"
nHdl := fCreate(cArqTxt)
If nHdl == -1
MsgAlert("O arquivo de nome "+cArqTxt+" nao pode ser criado! ","Atencao!")
Return
Endif
Return
*****************************************************************
Abraço
Por favor Acessar ou Registrar para participar da conversa.
Tempo para a criação da página:0.142 segundos