PROGRAMA PAROU DE RESPONDER
Pessoal, estou
usando o código para consultar cnpj sem o Captcha,
todavia as vezes a internet está tão lenta que o programa
pára de responder e não resta outra saÃda além de apelar
para o Ctrl + Alt + Del, alguém conhece algum código
que possa contornar essa situação?
usando o código para consultar cnpj sem o Captcha,
todavia as vezes a internet está tão lenta que o programa
pára de responder e não resta outra saÃda além de apelar
para o Ctrl + Alt + Del, alguém conhece algum código
que possa contornar essa situação?
Você precisa criar um loop e ir verificando a propriedade ReadyState do seu XmlHttp (Tá usando ele né?).
Se ela tiver ReadyState = 4 é sinal que já foi carregada, qualquer coisa você continua no loop.
Inclusive, a ideia que eu dou... é usar ele loop para implementar um TimeOut. Aà quando chegar no valor de TimeOut... ou chegar num certo número de iterações, você simplesmente corta o loop e fala que foi excedido o tempo/iteração limite.
Abraços!
Se ela tiver ReadyState = 4 é sinal que já foi carregada, qualquer coisa você continua no loop.
Inclusive, a ideia que eu dou... é usar ele loop para implementar um TimeOut. Aà quando chegar no valor de TimeOut... ou chegar num certo número de iterações, você simplesmente corta o loop e fala que foi excedido o tempo/iteração limite.
Abraços!
Isso mesmo, estou usando o XmlHttp,
este é o código:
Como poderia adaptar o Loop?
este é o código:
Dim http As XMLHTTP
Dim xmlRetorno As DOMDocument
Dim Resultado As String
Set http = New XMLHTTP
http.Open [Ô]POST[Ô], [Ô]http://www.xmls.com.br/cnpj/busca.php?cnpj=[Ô] & CP & [Ô]&tipo=xml[Ô], False
http.setRequestHeader [Ô]Content-Type[Ô], [Ô]text/xml; charset=utf-8[Ô]
http.Send
DoEvents
Set xmlRetorno = http.responseXML
If (Not xmlRetorno Is Nothing) Then
txt45.Text = xmlRetorno.XML
Resultado = xmlRetorno.getElementsByTagName([Ô]Empresa//Resultado[Ô]).Item(0).Text
txt45.Text = xmlRetorno.getElementsByTagName([Ô]Empresa//RazaoSocial[Ô]).Item(0).Text
txt48.Text = xmlRetorno.getElementsByTagName([Ô]Empresa//Endereco[Ô]).Item(0).Text
Set obj = Nothing
End If
Como poderia adaptar o Loop?
Coloque o loop depois do DoEvents. Verifique a propriedade ReadyState do objeto xmlHttp como condicional do loop... Só libere do loop após o estado da requisição ficar como completa ou então, apos um certo limite de tempo/iterações.
Qualquer dúvida dá um toque.
Qualquer dúvida dá um toque.
Tentei assim mas não deu certo, fica um loop infinito:
Do While http.ReadyState = 4
Set xmlRetorno = http.responseXML
If (Not xmlRetorno Is Nothing) Then
txt45.Text = xmlRetorno.XML
Resultado = xmlRetorno.getElementsByTagName([Ô]Empresa//Resultado[Ô]).Item(0).Text
txt45.Text = xmlRetorno.getElementsByTagName([Ô]Empresa//RazaoSocial[Ô]).Item(0).Text
txt48.Text = xmlRetorno.getElementsByTagName([Ô]Empresa//Endereco[Ô]).Item(0).Text
txt49.Text = xmlRetorno.getElementsByTagName([Ô]Empresa//Numero[Ô]).Item(0).Text
txt50.Text = xmlRetorno.getElementsByTagName([Ô]Empresa//Complemento[Ô]).Item(0).Text
txt51.Text = xmlRetorno.getElementsByTagName([Ô]Empresa//Bairro[Ô]).Item(0).Text
txt53.Text = xmlRetorno.getElementsByTagName([Ô]Empresa//Cidade[Ô]).Item(0).Text
txt54.Text = xmlRetorno.getElementsByTagName([Ô]Empresa//UF[Ô]).Item(0).Text
txt52.Text = xmlRetorno.getElementsByTagName([Ô]Empresa//CEP[Ô]).Item(0).Text
Set obj = Nothing
End If
Loop
Tente assim amigão
Dim http As XMLHTTP
Dim xmlRetorno As DOMDocument
Dim Resultado As String
Set http = New XMLHTTP
http.Open [Ô]POST[Ô], [Ô]http://www.xmls.com.br/cnpj/busca.php?cnpj=[Ô] & CP & [Ô]&tipo=xml[Ô], False
http.setRequestHeader [Ô]Content-Type[Ô], [Ô]text/xml; charset=utf-8[Ô]
http.Send
Do While http.ReadyState <> 4
DoEvents
Loop
Set xmlRetorno = http.responseXML
If (Not xmlRetorno Is Nothing) Then
txt45.Text = xmlRetorno.XML
Resultado = xmlRetorno.getElementsByTagName([Ô]Empresa//Resultado[Ô]).Item(0).Text
txt45.Text = xmlRetorno.getElementsByTagName([Ô]Empresa//RazaoSocial[Ô]).Item(0).Text
txt48.Text = xmlRetorno.getElementsByTagName([Ô]Empresa//Endereco[Ô]).Item(0).Text
Set obj = Nothing
End If
Luiz,
Obrigado pela tentativa de ajuda, fiz o teste e acho que esse comando
não influencia em nada na função pois ele passa direto.
Obrigado pela tentativa de ajuda, fiz o teste e acho que esse comando
não influencia em nada na função pois ele passa direto.
Mude
Do While http.ReadyState <> 4
DoEvents
Loop
Para
While http.ReadyState <> 4
DoEvents
Wend
Do While http.ReadyState <> 4
DoEvents
Loop
Para
While http.ReadyState <> 4
DoEvents
Wend
Tópico encerrado , respostas não são mais permitidas