Página 3 de 5

Guia Postal dos correios

Enviado: 07 Dez 2016 16:44
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"

Guia Postal dos correios

Enviado: 07 Dez 2016 16:48
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

Guia Postal dos correios

Enviado: 07 Dez 2016 17:49
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.

Guia Postal dos correios

Enviado: 07 Dez 2016 18:10
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

Guia Postal dos correios

Enviado: 07 Dez 2016 23:03
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.

Guia Postal dos correios

Enviado: 08 Dez 2016 16:08
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.

Guia Postal dos correios

Enviado: 08 Dez 2016 16:25
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

Guia Postal dos correios

Enviado: 08 Dez 2016 17:01
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

Guia Postal dos correios

Enviado: 08 Dez 2016 20:45
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.

Guia Postal dos correios

Enviado: 09 Dez 2016 10:33
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...

Guia Postal dos correios

Enviado: 09 Dez 2016 10:44
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

Guia Postal dos correios

Enviado: 09 Dez 2016 11:59
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.

Guia Postal dos correios

Enviado: 09 Dez 2016 23:31
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.

Guia Postal dos correios

Enviado: 11 Dez 2016 13:42
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

Guia Postal dos correios

Enviado: 11 Dez 2016 14:54
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.