Adaptar Rotina para...
 
Notifications
Clear all

Adaptar Rotina para lançar cep direto no form

4 Posts
1 Usuários
0 Reactions
2,061 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Colegas, aproveitando um modelo aqui do Forum, que Busca CEP na internet e joga em uma aba, e mais um outro que baixei em um Forum para Acces que retorna os dados direto nos Textbox de um formulário utilizando a função Split para desmembrar o resultado separando-os.
Primeiramente, na instrução utilizada para buscar o cep no modelo do access, em casa funciona corretamente, mas aqui na prefeitura tenho o erro de "Timed out" e mesmo falando com o pessoal do suporte não encontraram ainda uma solução.

Então procurei adaptar a rotina abaixo do modelo em excel aqui do forum, tentando separar o resultado com o mesmo principio da rotina no access, que diga-se de passagem é VBA, mas não consegui.

Pelo que entendi a informação vem tudo junto nesta instrução, e não sei como são separados, por isto que tentei adaptar com o Split este resultado, mas não consegui..

Ela joga os dados retornado para Range("Consulta!$a$1"), ou seja Aba Consulta Range A1, e o interessante é que coloca cada valor em uma celula separada:
A1 = 0 ou 1 'Falso ou Verdadeiro
B1 = (1)sucesso - cep completo ou (0)sucesso - cep não encontrado
C1 = UF
D1 = Cidade
E1 = Bairro
F1 = Tipo (Rua, Av, Tv...)
G1 = Endereço

ActiveWorkbook.XmlImport URL:= _
" http://republicavirtual.com.br/web_cep.php?cep=" & sCEP, ImportMap:= _
Nothing, Overwrite:=False, Destination:=
Range("Consulta!$a$1")

Resumindo, pois no anexo tem todas as rotinas e a explicação, o que eu gostaria é que em vez de jogar o resultado para a Aba e depois carregar no Formulário eles fossem diretos para os textbox, igual é feito na rotina adaptada do access.

Busca CEP

Tambem coloquei esta duvida no Forum de Access de onde baixei o outro modelo, o link é o abaixo :
maximoaccess maisforum
http://maximoaccess.maisforum.com/t1379 ... rt-url-cep

Fico no aguardo, e se eu tiver uma solução no outro forum retorno aqui com o resultado.

[]s

 
Postado : 26/06/2013 8:51 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Muito interessante a pergunta Mauro, mas pelo que entendi no help do Excel;
"a instrução Workbook.Método XmlImport (ou Workbook.Método XmlImportXml) -->Importa um arquivo de dados XML para a pasta de trabalho atual"

devolvem automaticamente o resultado para um endereço de planilha, que pode ou não ser indicado

"...Destino Opcional Variant Especifica o intervalo no qual a lista será criada. Você usa apenas o canto superior esquerdo do intervalo."
Então utilizando essa sintaxe, deve-se carregar o user form à partir da planilha.
Quanto ao segundo formulário (Excel 2003 e 2010), funciona normalmente; ou quase; pois os caracteres acentuados não são entendidos; devendo para corrigir isso habilitar/executar a rotina CEP_AfterUpdate

 
Postado : 26/06/2013 12:14 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Reinaldo, grato pelo retorno,

Eu já havia visto na ajuda do excel, apesar de dizer que a Propriedade "XmlMaps" encontra-se só na versão 2003, na2007 não tive problemas e tambem me atentei sobre o retorno do resultado, mas sabe como é, eu já vi tanta coisa que na ajuda do excel não era possível e depois encontrar na net alguma forma, resolvi tentar, pois esta não tenho problema quando executo no serviço.

Quanto a questão dos caracteres especiais, você está correto, é que como refiz o modelo para anexar nos foruns acabei pegando uma versão anterior que não estava habilitada esta rotina e nem percebi, no modelo atual ela está habilitada.

Mas voltando a questão relacionada ao assunto do tópico, enquanto não tiver uma resposta satisfatória, pois como eu disse, tambem coloquei no forum do access, resolvi procurar o porque da razão do erro na outra rotina qdo executo no serviço, e encontrei algumas opões que amanhã se der vou testar para ver os retornos, e procurar passar pro pessoal do suporte, que acredito tenha haver com a nossa conexão, uma vez que lá não é o mesmo tipo de conexão que tenho em casa.

Como indiquei no modelo, la tenho erro na instrução :
'Aqui no serviço esta instrução da erro
XMLHTTP.Send ""
'The operation timed Out"

O que encontrei sobre este erro, estão nos links abaixo :
Solution: MSXML2.XMLHTTP with a TimeOut Value
http://www.tech-archive.net/Archive/Exc ... 04045.html

How to VBA callback function when XMLHTTP onTimeOut?
http://stackoverflow.com/questions/1140 ... -ontimeout

Como só ocorre la no serviço, depois posto o resultado.

[]s

 
Postado : 26/06/2013 6:19 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Reinaldo pesquisando e lendo um pouco mais sobre como utilizarmos "XmlMaps",  temos de criar os mapas em "xml" ou importa-los das Bibliotecas do App, neste link temos instruções de como utilizar esta propriedade - Como usar XML no Excel 2003 - http://office.microsoft.com/pt-br/excel ... 01964.aspx, tanto que, se você utiliza o Excel 2003 e no modelo que postei, for no Menu - Dados / XML / Codigo Fonte XML.. - aparecerá os mapas criados, então se apagar todos a rotina não funcionará.

Resumindo, esta questão deixei de lado, uma vez que não tem comoo jogar direto para o formulário, e parti para  a Segunda, que seria o procurar resolver o porque que na Function busca_cep, em casa funciona e no serviço me da erro de "Timed Out", e pesquisando sobre este erro, encontrei varios que me ajudaram a resolver a questão, ou seja nesta Function eu alterei a instrução :

Set XMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")
por esta :
Set XMLHTTP = CreateObject("MSXML2.XMLHTTP")
que eliminou o erro e está retornando os resultados corretamente.

Encontrei sobre o assunto tambem no site abaixo :
XML - Usando recursos de XMLHTTP com ASP e VB
http://www.macoratti.net/xml_vb3.htm

Agora vou continuar a adaptação com a rotina que verifica se está conectado ou não, e estudar um pouco mais sobre estes objetos.

Deixo o modelo em que a rotina que estava dando erro e agora funcionando, pelo menos no serviço, sem problemas, já com a implementação de ajustar os caracteres acentuados.

Buscar CEP e retornar para Textbox

Qualquer problema que encontrarem, favor reportarem aqui no forum.

Grato pela contribuição.

Obs : Como o Reinaldo postou, aquela instrução só retorna o resultado para um Range, e uma vez que resolvi a outra questão do erro que acontecia no serviço, vou deixar o Tópico como Resolvido.

Mas, se alguem tiver alguma outra sugestão, estamos abertos a troca de informações.

abraços

 
Postado : 27/06/2013 7:05 pm