Guia Postal dos correios

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Guia Postal dos correios

Mensagem por JoséQuintas »

Tem uma coisa interessante nisso que percebi depois.
Algumas combinações são apenas as letras invertidas.
Serviu até pra uma pequena "conferida".

Código: Selecionar todos

      CASE cTxt $ "UG,LA,AL,GU" ; cNum := "0"
      CASE cTxt $ "X8,8X,CN,NC" ; cNum := "1"
      CASE cTxt $ "Z0,EP,PE,0Z" ; cNum := "2"
      CASE cTxt $ "GR,B1,1B,RG" ; cNum := "3"
      CASE cTxt $ "3D,DI,D3,ID" ; cNum := "4"
      CASE cTxt $ "SJ,C4,4C,JS" ; cNum := "5"
      CASE cTxt $ "2A,A2,QH,HQ" ; cNum := "6"
      CASE cTxt $ "FO,09,90,OF" ; cNum := "7"
      CASE cTxt $ "7Y,DM,Y7,MD" ; cNum := "8"
      CASE cTxt $ "5V,BK,V5,KB" ; cNum := "9"
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Guia Postal dos correios

Mensagem por JoséQuintas »

Estava tentando me lembrar pra que servia a outra rotina.... rs
Era pra isso, pra listar o que faltava.

Código: Selecionar todos

FUNCTION ConsultaMeuCep( cnAccess )

   LOCAL Rs, nAtual := 0, nOk := 0, nKey := 0, nTotal

   ? "Pesquisando meu cep"
   Rs := cnAccess:Execute( "SELECT COUNT(*) AS QTD FROM LOG_LOGRADOURO" )
   nTotal := rs:Fields( "QTD" ):Value
   Rs:Close()
   ? "num total de " + Ltrim( Str( nTotal ) ) + " CEPs"
   Rs := cnAccess:Execute( "SELECT LOG_NOME, LOG_KEY_DNE FROM LOG_LOGRADOURO" )
   DO WHILE nKey == K_ESC .AND. ! Rs:Eof()
      nKey := Inkey()
      nAtual++
      IF ! "X" $ ConverteCep( Rs:Fields( "LOG_KEY_DNE" ):Value )
         nOk++
      ENDIF
      IF Mod( nAtual, 10000 ) == 0 .OR. nTotal - nAtual < 10
         ? nAtual, nOk, nTotal - nAtual, Rs:Fields( "LOG_NOME" ):Value, Rs:Fields( "LOG_KEY_DNE" ):Value, ConverteCep( Rs:Fields( "LOG_KEY_DNE" ):Value )
      ENDIF
      Rs:MoveNext()
   ENDDO
   Rs:Close()

   RETURN NIL
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Guia Postal dos correios

Mensagem por JoséQuintas »

Uma vantagem no MySQL, ou Access, é que você pode nomear resultado, relacionar tabelas, etc.
Aqui um exemplo:
mysql.png
Trouxe os campos logradouro, bairro, cidade, UF e CEP, sendo que:
bairro é o resultado da pesquisa do bairro na tabela de bairros (log_bairro)
cidade é o resultado da pesquisa da cidade na tabela de cidades (log_localidade)
e os demais estão em log_logradouro

Basta criar uma tabela com esses campos, inserindo esse resultado e pronto.

Código: Selecionar todos

INSERT INTO NOVATABELA ..... o comando acima
O mesmo poderia ser feito no próprio Access e já salvar a tabela pronta pelo Harbour.
Mas é interessante ver os conteúdos pra ver as possibilidades.
Cada um pode querer de um jeito.

Inclusive pode existir uma tabela IBGE, e já acrescentá-la no resultado e/ou na base nova.

Nota: acho que errei no comando na parte do bairro, vou confirmar depois.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Guia Postal dos correios

Mensagem por JoséQuintas »

Vixi... compliquei... aproveitei uma tabela do IBGE da ANP que está em outra base de dados.
Mas funcionou.
Aproveitei pra corrigir o bairro que estava errado, tinha usado o código de localidade e não de bairro.
Uma vez a base no MySQL, dá pra brincar à vontade.

Ou se tiver Access, pode brincar diretamente na base dos correios.
Isso funcionaria em Harbour também, mas ter visual dos testes é mais interessante.
,ysql2.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Guia Postal dos correios

Mensagem por JoséQuintas »

Não sei que tipo de teste quer fazer mas a estrutura é igual, só tem 1 campo a mais em alguns arquivos.
Ou só editar o SQL na criação de tabelas pra ficar compatível com Access.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Guia Postal dos correios

Mensagem por JoséQuintas »

NENHUM campo foi excluído.
Crie um mdb com a mesma senha dos correios, e restaure esse backup.
Depois é só APAGAR os campos NUMCEP.
Pronto.

Nota:
Se puder comprar o novo mais atualizado, melhor ainda, porque esse deixou de ser.
Acho que cópia do original já é distribuir o que é dos correios.
Não é CD, é um misero download, de um EXE de instalação que tem 3 EXEs de instalação.
E o primeiro dos três é pra instalar os outros dois.
É instalação da instalação, que instala as outras instalações.
Bem estilo Brasil.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Guia Postal dos correios

Mensagem por JoséQuintas »

Como exemplo, este aqui, se eliminar a coluna NUMCEP, tem o conteúdo exato dos correios.
Qualquer que seja o teste, o resultado com esse arquivo será o mesmo.
correios.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Guia Postal dos correios

Mensagem por JoséQuintas »

Uia.
Tem a lista dos novos CEPs, mas está em PDF.
Converter esses PDFs deixaria a base totalmente atualizada.

https://www.correios.com.br/para-voce/c ... ogradouros
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Guia Postal dos correios

Mensagem por JoséQuintas »

AVISO !!!

Vários CEPs estão convertidos errados, mais de 100.000

É só converter de novo, a rotina de conversão está no post.

É só pesquisar LENGTH( TRIM( NUMCEP ) ) <> 8, e converter.

Estou usando pra atualizar meu webservice, pra não perder nenhum CEP, e sobraram esses sem atualizar, por isso percebi.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Guia Postal dos correios

Mensagem por JoséQuintas »

Outra coisa que é fod.
Assinatura do email.
contato.png
Ligando usando telefone fixo:
mensagem: pra ligar pra este telefone não precisa código da operadora

Retirando o código da operadora:
mensagem: este número de telefone não existe

Ligando pelo celular:
Cai numa central de fax.

Imaginem se não estivessem à inteira disposição, o que seria...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Guia Postal dos correios

Mensagem por JoséQuintas »

E o cronograma dos correios, apesar que é do DNE.
O Guia Postal foi lançado 07/12, ao invés de 30/11, mas com atualizações até 16/11/2016.
Todo mês tem um novo....
correios3.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Guia Postal dos correios

Mensagem por JoséQuintas »

Foi mais fácil do que eu pensava.

3381 CEPs novos.

Apenas peguei os CEPs dos PDFs e adicionei no meu webservice.
Agora o próprio webservice vai atualizar.

Se os próximos saírem em PDF, só usar o mesmo esquema.

Nota: na falta de outra opção, usei o copiar/colar e rotina pra separar as "palavras" que correspondem ao CEP.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Guia Postal dos correios

Mensagem por JoséQuintas »

Os ceps vazios que adicionei.
cep1.png
Alguns ceps que já foram preenchidos
cep2.png
Só não sei o que fazer com excluídos/etc.
Por enquanto registrando as opções de cep que o correio informa., em ceplist
cep deixou de existir e entrou lista no lugar, ou foi desmembrado e o correio informa a lista pra confirmar.
cep3.png
Mas no momento, ficou mais atualizado do que o original.
E se considerar esse "extra", tem até algo mais.

É a primeira vez que os correios disponibilizam lista do que foi alterado.
Se continuar assim, vai dar pra manter atualizado.

Nota: com algumas mudanças do Windows 10, já estou conseguindo usar o monitor em 4k.
O problema é que quando esqueço de reduzir, a imagem vém pra cá grande.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Guia Postal dos correios

Mensagem por JoséQuintas »

Algumas rotinas fui fazendo e apagando, a do PDF foi uma delas.
Basicamente copiar/colar pra um arquivo texto, manualmente.

Depois no processo do arquivo texto, separar palavras, e analisar qual tinha o formato do CEP.
Mais ou menos isto:

Código: Selecionar todos

LOCAL aCepList := {}, cCep := "", cLetra, cTxt
cTxt := MemoRead( "texto.txt" )
FOR EACH cLetra IN cTxt
   DO CASE
   CASE $ cLetra $ "0123456789"
      cCep += cLetra
   OTHERWISE
      cCep := SoNumeros( cCep )
      IF Len( cCep ) ==8
         AAdd( aCepList, cCep
      ENDIF
   ENDCASE
NEXT
...

FUNCTION SoNumeros( cTxt )

   LOCAL cSoNumero := "", cLetra

   FOR EACH cLetra IN cTxt
      IF cLetra $ "0123456789"
         cSoNumero += cLetra
     ENDIF
   NEXT
   RETURN cSoNumero
Ainda estou ajustando.
Para a lista completa de CEPs é necessário pegar LOG_LOGRADOURO, LOG_LOCALIDADE, LOG_CPC, LOG_UNID_OPER, LOG_GRANDE_USUARIO

Vamos ver o que vai sobrar agora.

Nota: Como eu disse antes, deixei por conta do webservice atualizar o resto, nem me preocupei em pegar informação completa
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Guia Postal dos correios

Mensagem por JoséQuintas »

Em mdb é mais que o dobro do que em MySql, e tem menos informação.
76.916.684 cep20161031.zip
36.428.892 cepmysql20161031.zip

Divirta-se

http://www.jpatecnologia.com.br/arquivo ... 161031.zip

Ficará disponível por tempo limitado.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder