Categorias

MicroSiga: Aprenda a importar arquivos CSV usando AdvPL

A importação de arquivos gerados pelo Excel é bem simples, para isso apenas informe em cada coluna o nome real do campo da tabela, exemplo: A1_FILIAL;A1_NOME;A1_END;

#include "totvs.ch"
#include "protheus.ch"

User Function AEST901()
 
Local cArq    := "clientes.txt"
Local cLinha  := ""
Local lPrim   := .T.
Local aCampos := {}
Local aDados  := {}
 
Private aErro := {}
 
If !File(cDir+cArq)
	MsgStop("O arquivo " +cDir+cArq + " não foi encontrado. A importação será abortada!","[AEST901] - ATENCAO")
	Return
EndIf
 
FT_FUSE(cDir+cArq)
ProcRegua(FT_FLASTREC())
FT_FGOTOP()
While !FT_FEOF()
 
	IncProc("Lendo arquivo texto...")
 
	cLinha := FT_FREADLN()
 
	If lPrim
		aCampos := Separa(cLinha,";",.T.)
		lPrim := .F.
	Else
		AADD(aDados,Separa(cLinha,";",.T.))
	EndIf
 
	FT_FSKIP()
EndDo
 
Begin Transaction
	ProcRegua(Len(aDados))
	For i:=1 to Len(aDados)
 
		IncProc("Importando Clientes...")
 
		dbSelectArea("SA1")
		dbSetOrder(1)
		dbGoTop()
		If !dbSeek(xFilial("SA1")+aDados[i,1])
			Reclock("SA1",.T.)
			SA1->A1_FILIAL := xFilial("SA1")
			For j:=1 to Len(aCampos)
				cCampo  := "SA1->" + aCampos[j]
				&cCampo := aDados[i,j]
			Next j
			SZ1->(MsUnlock())
		EndIf
	Next i
End Transaction
 
FT_FUSE()
 
ApMsgInfo("Importação dos Clientes concluída com sucesso!","[AEST901] - SUCESSO")
 
Return