Importar CEPS e transformar tudo em faixa
Um belo dia, precisei que o banco me enviasse uma faixa de cep para saber quais municípios o banco atenderia.
Para minha surpresa, o banco me enviou um arquivo parecido com isso :
01007000;SAO PAULO;SP;SIM
01007010;SAO PAULO;SP;SIM
01007020;SAO PAULO;SP;SIM
01007030;SAO PAULO;SP;SIM
01007906;SAO PAULO;SP;SIM
01008000;SAO PAULO;SP;SIM
01008010;SAO PAULO;SP;SIM
01008900;SAO PAULO;SP;SIM
01008908;SAO PAULO;SP;SIM
O arquivo é muito maior, este é só um exemplo.
O que o banco enviou, foi o cep de todas as ruas daquele município para eu popular em meu banco de dados.
Como eu precisava de uma FAIXA fiz o seguinte :
ZZ_FAIXAINI e ZZ_FAIXAFIM mas desta forma :
01007-000 até 01007-906 e deixar somente este registro no banco de dados.
Então, fiz um programinha para fazer isto. Vocês podem alterar conforme a necessidade, mas vale como exemplo.
#INCLUDE 'PROTHEUS.CH'
#INCLUDE "RWMAKE.CH"
#INCLUDE "TBICONN.CH"
#INCLUDE "protheus.ch"
USER FUNCTION XIMPORTA
Local cArq := "CEP_AGENCIA.TXT"
Local aRange := {}
Local cDir := "E:\"
Local cCol1 := ""
Local cCol2 := ""
Local pCol1 := ""
Local pCol2 := ""
Local aTables := { "SZZ" }
Local pAnte
RPCSetType( 3 )
RpcSetEnv ( "01", "01", Nil, Nil, "FAT", Nil, aTables )
Private aErro := {}
Conout("Carregando
arquivo ...")
FT_FUSE(cDir+cArq)
FT_FGOTOP()
// Carrega a linha previamente
cLinha := FT_FREADLN()
aadd(aRange,{"",""})
pCol1 := Substr(cLinha,1,5)
pCol2 := Substr(cLinha,6,3)
pAnte := Substr(cLinha,6,3)
While !FT_FEOF()
cCol1
:= Substr(cLinha,1,5)
cCol2
:= Substr(cLinha,6,3)
While cCol1 == pCol1
aRange[Len(aRange)][01]:=cCol1 + cCol2 // COLUNA 1
aRange[Len(aRange)][02]:=cCol1 + cCol2 // COLUNA 2
pAnte := Substr(cLinha,6,3)
FT_FSKIP()
cLinha := FT_FREADLN()
pCol1 := Substr(cLinha,1,5)
pCol2 := Substr(cLinha,6,3)
Enddo
aRange[Len(aRange)][02]:=cCol1 + pAnte // COLUNA 2
Conout("Range
novo " + aRange[Len(aRange)][01] + "-" + aRange[Len(aRange)][02])
SZZ->(dbAppend(),.T.)
SZZ->ZZ_FILIAL := SPACE(02)
SZZ->ZZ_BANCO := "745"
SZZ->ZZ_CEPINI := aRange[Len(aRange)][01]
SZZ->ZZ_CEPFIM := aRange[Len(aRange)][02]
SZZ->(MSUNLOCK())
aadd(aRange,{"",""})
pCol1 := Substr(cLinha,1,5)
pCol2 := Substr(cLinha,6,3)
EndDo
FT_FUSE()

Cara, você salvou minha vida
ResponderExcluir