MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Modulo de busca de CEP dando erro

    Compartilhe

    MMousinho
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 39
    Registrado : 02/08/2016

    [Resolvido]Modulo de busca de CEP dando erro

    Mensagem  MMousinho em Qui 29 Jun 2017, 19:05

    Boa tarde, sou novo em access e desenvolvo com video aulas e estou aprendendo bem.

    Estou tentando implantar um sistema que busca cep pelo correio mais esta dando erro conforme abaixo no modulo temos a seguinte codificação...





    Option Compare Database

    Option Explicit
    #If VBA7 Then
    Private Declare PtrSafe Sub sapiSleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long) 'Para rodar em 64Bits
    #Else
    Private Declare PtrSafe Sub sapiSleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long) 'Para rodar em 32Bits
    #End If

    Function aguardar(ByRef ObjIe As Object, tempo As Integer)
    With ObjIe
    Do Until Not .Busy And .ReadyState = READYSTATE_COMPLETE
    Debug.Print tempo
    Debug.Print .Busy
    Debug.Print .ReadyState
    DoEvents
    Loop
    End With
    Call sSleep(100)
    End Function

    '***************** Code Start *******************
    ' This code was originally written by Dev Ashish.
    ' It is not to be altered or distributed,
    ' except as part of an application.
    ' You are free to use it in any application,
    ' provided the copyright notice is left unchanged.
    '
    ' Code Courtesy of
    ' Dev Ashish
    '


    Sub sSleep(lngMilliSec As Long)
    If lngMilliSec > 0 Then
    Call sapiSleep(lngMilliSec)
    End If
    End Sub

    Sub sTestSleep()
    Const cTIME = 1000 'in MilliSeconds
    Call sSleep(cTIME)
    MsgBox "Before this Msgbox, I was asleep for " _
    & cTIME & " Milliseconds."
    End Sub
    '***************** Code End *********************


    Peguei o modelo com Rafael neste forum...e temos a segunte codificação no formulario...





    'Sistema para buscar CEP direto no site dos correios online.
    'Desenvolvido por Rafael Teixeira Coelho - rtcoelho no fórum maximoaccess
    'Versão 1.0

    Private Sub cep_AfterUpdate()

    Dim todotexto, inicio, fim, incremento, cidade_est

    'Exibe o objeto do IE
    Me.ie.Visible = True

    'Navega até o site dos Correios mobile
    Me.ie.Navigate "http://m.correios.com.br/movel/buscaCepConfirma.do"

    'Move o foco para o objeto
    Me.ie.SetFocus

    'Aguardo até que a página esteja totalmente carregada
    Call aguardar(ie, 1)

    'Seta variavel html com a classe mais comum do objeto
    Set html = Me.ie.Document

    'Localiza no site dos correios o campo do CEP e injeta
    html.all("cepEntrada").Value = cep

    'Depois do CEP injetado fazemos a busca
    html.getElementsByTagName("input")(3).Click

    'Executa função que aguarda que a página esteja totalmente carregada
    Call aguardar(ie, 1)

    'Como o site dos correios usa ajax para fazer a consulta, se não gerarmos um evento antes de pegar os dados, teremos um erro
    'Mais detalhes em: [Você precisa estar registrado e conectado para ver este link.]
    'Então, já que terei que fazer este evento, resolvi fazer uma confirmação do CEP digitado
    pergunta = MsgBox("O CEP informado " & cep & " está correto?", vbYesNo)

    'Caso a resposta seja sim, vamos pegar no site dos correios o que nos interessa
    If pergunta = 6 Then

    'Pegamos o html da página
    todotexto = html.DocumentElement.outerHTML

    'Vamos usar um incremento para nos auxiliar na busca dos dados
    incremento = 0

    'Lemos o html da página e pegamos o endereço
    todotexto = Right(todotexto, Len(todotexto) - incremento)

    'Aqui verificamos se ocorreu algum erro no código por cep inválido
    If InStr(todotexto, "
    ") = 0 Then

    'Pegamos a posição da primeira ocorrência de resposta em todo texto que traz o endereço
    inicio = InStr(todotexto, "")

    'Pegamos a posição final da primeira ocorrência de resposta em todo texto que traz o endereço
    fim = InStr(todotexto, "

    ")

    'Somamos a quantidade de caracteres exedentes da primeira ocorrencia que é = 29
    inicio = inicio + 29

    'Fazemos o recorte do html conforme as posições informadas para obter o endereço e inserir no formulário
    endereco = Mid(todotexto, inicio, fim - inicio)

    'Definimos nova posição de incremento para auxiliar na busca dos dados
    incremento = fim

    'Lemos o html da página e pegamos o bairro
    todotexto = Right(todotexto, Len(todotexto) - incremento)

    'Pegamos a posição da segunda ocorrência de resposta em todo texto que traz o bairro
    inicio = InStr(todotexto, "")

    'Pegamos a posição final da segunda ocorrência de resposta em todo texto que traz o bairro
    fim = InStr(todotexto, "

    ")

    'Somamos a quantidade de caracteres exedentes da segunda ocorrencia que é = 29
    inicio = inicio + 29

    'Fazemos o recorte do html conforme as posições informadas para obter o bairro e inserir no formulário
    bairro = Mid(todotexto, inicio, fim - inicio)

    'Definimos nova posição de incremento para auxiliar na busca dos dados
    incremento = fim

    'Lemos o html da página e pegamos a cidade e o estado que estão juntos
    todotexto = Right(todotexto, Len(todotexto) - incremento)

    'Pegamos a posição da terceira ocorrência de resposta em todo texto que traz a cidade e o estado
    inicio = InStr(todotexto, "")

    'Pegamos a posição final da terceira ocorrência de resposta em todo texto que traz a cidade e o estado
    fim = InStr(todotexto, "

    ")

    'Somamos a quantidade de caracteres exedentes da terceira ocorrencia que é = 29
    inicio = inicio + 29

    'Em uma variavel, fazemos o recorte do html conforme as posições informadas para obter a cidade e o estado
    cidade_est = Mid(todotexto, inicio, fim - inicio)

    'Fazemos o recorte do html para separar a cidade que está junto com o estado e inserir no formulário
    cidade = Left(cidade_est, Len(cidade_est) - 5)

    'Fazemos o recorte do html para separar a cidade que está junto com o estado e inserir no formulário
    estado = Right(cidade_est, 3)

    Else

    'Se o CEP estiver errado, informamos
    MsgBox "CEP inválido, verifique e tente novamente."

    End If

    Else

    'Se clicar em não na confirmação do cep, limpamos o form do cep
    cep = ""

    End If

    'Limpamos
    Set html = Nothing

    'Movemos o foco para o campo CEP
    cep.SetFocus

    'Ocultamos o objeto do IE
    Me.ie.Visible = False

    End Sub




    Poderia me ajudar a implantar no meu sistema?

    em anexo mandei o sistema como esta sendo desenvolvido.
    avatar
    Alexandre Fim
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 154
    Registrado : 13/12/2016

    Re: [Resolvido]Modulo de busca de CEP dando erro

    Mensagem  Alexandre Fim em Qui 29 Jun 2017, 20:18

    MMousinho boa tarde,

    Fiz um exemplo e já havia postado aqui anteriormente.

    Faça um teste.

    Espero ter ajudado.

    Att,

    Alexandre
    Anexos
    BuscaCEPApiCorreios.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (38 Kb) Baixado 17 vez(es)

    MMousinho
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 39
    Registrado : 02/08/2016

    Re: Modulo de busca de CEP dando erro

    Mensagem  MMousinho em Qui 29 Jun 2017, 20:32

    Man, Obrigado pela ajuda tão rápida...

    Mais mesmo que eu coloque ele no meu sistema continua dando erro, como proceder?

    Segue em anexo se quiser dar uma olhada no conteúdo.
    avatar
    Alexandre Fim
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 154
    Registrado : 13/12/2016

    Re: [Resolvido]Modulo de busca de CEP dando erro

    Mensagem  Alexandre Fim em Qui 29 Jun 2017, 22:02

    Não veio o anexo...
    Favor postar...
    Grato

    MMousinho
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 39
    Registrado : 02/08/2016

    RE:Modulo de busca de CEP dando erro

    Mensagem  MMousinho em Qui 29 Jun 2017, 23:09

    Segue.
    Anexos
    SIS LOJAS MM.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (212 Kb) Baixado 7 vez(es)
    avatar
    Alexandre Fim
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 154
    Registrado : 13/12/2016

    Re: [Resolvido]Modulo de busca de CEP dando erro

    Mensagem  Alexandre Fim em Sex 30 Jun 2017, 14:13

    Mousinho,


    É necessário incluir a referência no menu:

    1 - Executar os comandos ALT+F11 para entrar no modo VBA
    2 - Em seguida vá no menu Ferramentas > Referências e marque a opção "Microsoft XML. v3.0"

    Pronto !!

    Boa sorte

    Abraço

    MMousinho
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 39
    Registrado : 02/08/2016

    Re: Modulo de busca de CEP dando erro

    Mensagem  MMousinho em Sex 30 Jun 2017, 18:03

    Man, Obrigado.

    Quase pronto...

    Só falta eu conseguir salvar junto com o cadastro de clientes.

    Segue anexo do exemplo em anexo.

    Preencho o cadastro e quando coloco cep não salva tudo junto na mesma tabela!

    Consegue me ajudar?

    Desculpe, sou iniciante ainda.
    Anexos
    exemplo.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (257 Kb) Baixado 5 vez(es)
    avatar
    Alexandre Fim
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 154
    Registrado : 13/12/2016

    Re: [Resolvido]Modulo de busca de CEP dando erro

    Mensagem  Alexandre Fim em Sab 01 Jul 2017, 01:35

    Mousinho,

    Segue cadastro de clientes para sua verificação.

    O cadastro está com os campos acoplados à tabela, mas ele não salva à medida que vc vai digitando. Ele somente salva o registro ao clicar em Salvar. Desta forma evita o preenchimento acidental.

    No botão Salvar, criei uma função que verifica o correto preenchimento dos campos, porém, eu fiz de alguns campos somente, e fica a seu critério incluir outras validações que vc achar necessário. (Copie e cole a validação do campo "Nome" e mude para o campo que deseja verificar).

    Espero ter ajudado.

    Abraço
    Anexos
    CadCliente.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (54 Kb) Baixado 5 vez(es)

    MMousinho
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 39
    Registrado : 02/08/2016

    Re: Modulo de busca de CEP dando erro

    Mensagem  MMousinho em Sab 01 Jul 2017, 03:47

    Boa noite man...Obrigado pela ajuda...deu certo...esta do jeito que eu queria, agora só vou ajustar algumas coisas!!! cheers

    Se puder me dar uma força no Tópico "Busca dados de outra tabela" , estou sem resposta de ninguém la.

    Obrigado mesmo man...

    MMousinho
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 39
    Registrado : 02/08/2016

    Re: Modulo de busca de CEP dando erro

    Mensagem  MMousinho em Sab 01 Jul 2017, 22:34

    Alexandre, Olha ai o que fiz...da uma opinião...ficou bom?

    A tabela em que ajudou dei uma ajustada nela.

    MMousinho
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 39
    Registrado : 02/08/2016

    Re: Modulo de busca de CEP dando erro

    Mensagem  MMousinho em Sab 01 Jul 2017, 22:35

    Segue o anexo.
    Anexos
    SIS LOJAS MM.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (811 Kb) Baixado 7 vez(es)
    avatar
    Alexandre Fim
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 154
    Registrado : 13/12/2016

    Re: [Resolvido]Modulo de busca de CEP dando erro

    Mensagem  Alexandre Fim em Seg 03 Jul 2017, 21:38

    Fala ai MMousinho,

    Dei uma olhada no seu banco de dados, e seguem algumas sugestões:

    1 - Cadastro de cliente, para que seja mais completo, vc deve validar alguns campos necessários, como o endereço completo e etc. Ele está aceitando gravar somente o nome e o CPF.

    2 - Criar tela de pesquisa de clientes.

    3 - Cadastro de Cliente - fazer uma busca do CPF informado na tela, antes de gravar o registro, caso o CPF informado já esteja cadastrado com outro cliente. O Access não irá permitir a gravação, pois o CPF é chave primária, porém, neste caso, no momento de gravar o registro, o sistema exibe a mensagem de "Registro gravado com sucesso", o que na verdade não foi gravado

    4 - Verificar os campos do tipo "Texto" de todas as tabelas, pois estão com tamanho 255 caracteres, o que é desnecessário, e isso atrapalha na hora de criar pesquisas utilizando esses campos, e também ocupa espaço em memória, deixando seus sistema lento.

    Mas de resto, ficou legal !!!

    Só precisa ver se vc vai disponibilizar essa ferramenta para algum cliente seu, porque existem algumas rotinas que bloqueia a estrutura do seu banco, para que ninguem mexa.

    Um abraço.

    MMousinho
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 39
    Registrado : 02/08/2016

    Re: [Resolvido]Modulo de busca de CEP dando erro

    Mensagem  MMousinho em Sex 07 Jul 2017, 01:15

    Obrigado pelas sugestões , vou verificar. cheers

      Data/hora atual: Ter 21 Nov 2017, 10:15