ERRO NA CONSULTA CEP SITE CORREIOS
No meu formulário ao digitar o [ô]CEP[ô] e clicar no botão [ô]Buscar[ô] ele faz a consulta no site dos correios e preenche os campos endereço, bairro, cidade, e uf.
Fiz a validação caso o usuário digite o cep correto ele preenche estes campos, mas caso o valor seja < 9 dÃgitos ele dá a mensagem de incorreto, porém caso o usuário digite um nº aleatório por exemplo 92222-222 eu precisaria que emitisse também uma mensagem de erro pois atualmente ele emite o erro em anexo... porém como poderia fazer? Abaixo está o código que uso:
Private Sub cmdBuscar_Click()
If Len(txtCep.Text) < 9 Then
MensagemDoSistema [Ô]Campo [ô]Cep[ô] incorreto, verifique antes de fazer a busca![Ô]
txtCep.Text = [Ô][Ô]
txtCep.SetFocus
Exit Sub
End If
MousePointer = 11
Dim xlink As String
Set myXML = New DOMDocument
myXML.resolveExternals = True
myXML.validateOnParse = True
myXML.async = False
xlink = [Ô]http://cep.republicavirtual.com.br/web_cep.php?cep=[Ô] & txtCep & [Ô]&formato=xml[Ô]
myXML.Load (xlink)
For Each X In myXML.documentElement.childNodes
Select Case X.nodeName
Dim xrua As String
Dim xtipo As String
Case Is = [Ô]logradouro[Ô]
xrua = UCase$(X.childNodes(0).Text)
Case Is = [Ô]uf[Ô]
cboUf = UCase$(X.childNodes(0).Text)
Case Is = [Ô]cidade[Ô]
txtCidade = UCase$(X.childNodes(0).Text)
Case Is = [Ô]bairro[Ô]
txtBairro = UCase$(X.childNodes(0).Text)
Case Is = [Ô]tipo_endereco[Ô]
xtipo = UCase$(X.childNodes(0).Text)
End Select
txtEndereco = xtipo & [Ô] [Ô] & xrua
Next
MousePointer = 0
txtNumeroCasa.SetFocus
End Sub
Quando é digitado um cep inválido ele retorna para a linha:
cboUf = UCase$(X.childNodes(0).Text)
Fiz a validação caso o usuário digite o cep correto ele preenche estes campos, mas caso o valor seja < 9 dÃgitos ele dá a mensagem de incorreto, porém caso o usuário digite um nº aleatório por exemplo 92222-222 eu precisaria que emitisse também uma mensagem de erro pois atualmente ele emite o erro em anexo... porém como poderia fazer? Abaixo está o código que uso:
Private Sub cmdBuscar_Click()
If Len(txtCep.Text) < 9 Then
MensagemDoSistema [Ô]Campo [ô]Cep[ô] incorreto, verifique antes de fazer a busca![Ô]
txtCep.Text = [Ô][Ô]
txtCep.SetFocus
Exit Sub
End If
MousePointer = 11
Dim xlink As String
Set myXML = New DOMDocument
myXML.resolveExternals = True
myXML.validateOnParse = True
myXML.async = False
xlink = [Ô]http://cep.republicavirtual.com.br/web_cep.php?cep=[Ô] & txtCep & [Ô]&formato=xml[Ô]
myXML.Load (xlink)
For Each X In myXML.documentElement.childNodes
Select Case X.nodeName
Dim xrua As String
Dim xtipo As String
Case Is = [Ô]logradouro[Ô]
xrua = UCase$(X.childNodes(0).Text)
Case Is = [Ô]uf[Ô]
cboUf = UCase$(X.childNodes(0).Text)
Case Is = [Ô]cidade[Ô]
txtCidade = UCase$(X.childNodes(0).Text)
Case Is = [Ô]bairro[Ô]
txtBairro = UCase$(X.childNodes(0).Text)
Case Is = [Ô]tipo_endereco[Ô]
xtipo = UCase$(X.childNodes(0).Text)
End Select
txtEndereco = xtipo & [Ô] [Ô] & xrua
Next
MousePointer = 0
txtNumeroCasa.SetFocus
End Sub
Quando é digitado um cep inválido ele retorna para a linha:
cboUf = UCase$(X.childNodes(0).Text)
Me aprofundando nesta rotina, fiz um verificador de conexão de internet, caso o mesmo não esteja na rede ele já emite mensagem de erro e não prossegue, ficando assim:
Private Declare Function InternetGetConnectedState Lib [Ô]wininet[Ô] (ByRef dwflags As Long, ByVal dwReserved As Long) As Long
Private Const CONNECT_LAN As Long = &H2
Private Const CONNECT_MODEM As Long = &H1
Private Const CONNECT_PROXY As Long = &H4
Private Const CONNECT_OFFLINE As Long = &H20
Private Const CONNECT_CONFIGURED As Long = &H40
Public Function IsWebConnected(Optional ByRef ConnType As String) As Boolean
Dim dwflags As Long
Dim WebTest As Boolean
ConnType = [Ô][Ô]
WebTest = InternetGetConnectedState(dwflags, 0&)
Select Case WebTest
Case dwflags And CONNECT_LAN: ConnType = [Ô]LAN[Ô]
Case dwflags And CONNECT_MODEM: ConnType = [Ô]Modem[Ô]
Case dwflags And CONNECT_PROXY: ConnType = [Ô]Proxy[Ô]
Case dwflags And CONNECT_OFFLINE: ConnType = [Ô]Offline[Ô]
Case dwflags And CONNECT_CONFIGURED: ConnType = [Ô]Configurada[Ô]
End Select
IsWebConnected = WebTest
End Function
e no botão que faz a busca ficou assim:
Private Sub cmdBuscar_Click()
Dim msg As String
If Len(txtCep.Text) < 9 Or (txtCep.Text) = [Ô][Ô] Then
MensagemDoSistema [Ô]Campo [ô]Cep[ô] incorreto, verifique antes de fazer a busca![Ô]
txtCep.Text = [Ô][Ô]
txtCep.SetFocus
Exit Sub
End If
[ô]-----------------------------------------------------------------------------------------------
If IsWebConnected(msg) Then
[ô]MensagemDoSistema [Ô]Você está conectado à Internet via: [Ô] & msg
Else
MensagemDoSistema [Ô]Verifique sua conexão de rede, pois não está conectado à internet! Não será possÃvel fazer a busca do cep![Ô]
txtEndereco.SetFocus
Exit Sub
End If
[ô]-----------------------------------------------------------------------------------------------
MousePointer = 11
Dim xlink As String
Set myXML = New DOMDocument
myXML.resolveExternals = True
myXML.validateOnParse = True
myXML.async = False
xlink = [Ô]http://cep.republicavirtual.com.br/web_cep.php?cep=[Ô] & txtCep & [Ô]&formato=xml[Ô]
myXML.Load (xlink)
For Each X In myXML.documentElement.childNodes
Select Case X.nodeName
Dim xrua As String
Dim xtipo As String
Case Is = [Ô]logradouro[Ô]
xrua = UCase$(X.childNodes(0).Text)
Case Is = [Ô]uf[Ô]
cboUf = UCase$(X.childNodes(0).Text)
Case Is = [Ô]cidade[Ô]
txtCidade = UCase$(X.childNodes(0).Text)
Case Is = [Ô]bairro[Ô]
txtBairro = UCase$(X.childNodes(0).Text)
Case Is = [Ô]tipo_endereco[Ô]
xtipo = UCase$(X.childNodes(0).Text)
End Select
txtEndereco = xtipo & [Ô] [Ô] & xrua
Next
MousePointer = 0
txtNumeroCasa.SetFocus
End Sub
Só falta criar alguma coisa do tipo caso seja um cep inválido, pois o sistema fica pensando e retorna com erro daÃ..
Private Declare Function InternetGetConnectedState Lib [Ô]wininet[Ô] (ByRef dwflags As Long, ByVal dwReserved As Long) As Long
Private Const CONNECT_LAN As Long = &H2
Private Const CONNECT_MODEM As Long = &H1
Private Const CONNECT_PROXY As Long = &H4
Private Const CONNECT_OFFLINE As Long = &H20
Private Const CONNECT_CONFIGURED As Long = &H40
Public Function IsWebConnected(Optional ByRef ConnType As String) As Boolean
Dim dwflags As Long
Dim WebTest As Boolean
ConnType = [Ô][Ô]
WebTest = InternetGetConnectedState(dwflags, 0&)
Select Case WebTest
Case dwflags And CONNECT_LAN: ConnType = [Ô]LAN[Ô]
Case dwflags And CONNECT_MODEM: ConnType = [Ô]Modem[Ô]
Case dwflags And CONNECT_PROXY: ConnType = [Ô]Proxy[Ô]
Case dwflags And CONNECT_OFFLINE: ConnType = [Ô]Offline[Ô]
Case dwflags And CONNECT_CONFIGURED: ConnType = [Ô]Configurada[Ô]
End Select
IsWebConnected = WebTest
End Function
e no botão que faz a busca ficou assim:
Private Sub cmdBuscar_Click()
Dim msg As String
If Len(txtCep.Text) < 9 Or (txtCep.Text) = [Ô][Ô] Then
MensagemDoSistema [Ô]Campo [ô]Cep[ô] incorreto, verifique antes de fazer a busca![Ô]
txtCep.Text = [Ô][Ô]
txtCep.SetFocus
Exit Sub
End If
[ô]-----------------------------------------------------------------------------------------------
If IsWebConnected(msg) Then
[ô]MensagemDoSistema [Ô]Você está conectado à Internet via: [Ô] & msg
Else
MensagemDoSistema [Ô]Verifique sua conexão de rede, pois não está conectado à internet! Não será possÃvel fazer a busca do cep![Ô]
txtEndereco.SetFocus
Exit Sub
End If
[ô]-----------------------------------------------------------------------------------------------
MousePointer = 11
Dim xlink As String
Set myXML = New DOMDocument
myXML.resolveExternals = True
myXML.validateOnParse = True
myXML.async = False
xlink = [Ô]http://cep.republicavirtual.com.br/web_cep.php?cep=[Ô] & txtCep & [Ô]&formato=xml[Ô]
myXML.Load (xlink)
For Each X In myXML.documentElement.childNodes
Select Case X.nodeName
Dim xrua As String
Dim xtipo As String
Case Is = [Ô]logradouro[Ô]
xrua = UCase$(X.childNodes(0).Text)
Case Is = [Ô]uf[Ô]
cboUf = UCase$(X.childNodes(0).Text)
Case Is = [Ô]cidade[Ô]
txtCidade = UCase$(X.childNodes(0).Text)
Case Is = [Ô]bairro[Ô]
txtBairro = UCase$(X.childNodes(0).Text)
Case Is = [Ô]tipo_endereco[Ô]
xtipo = UCase$(X.childNodes(0).Text)
End Select
txtEndereco = xtipo & [Ô] [Ô] & xrua
Next
MousePointer = 0
txtNumeroCasa.SetFocus
End Sub
Só falta criar alguma coisa do tipo caso seja um cep inválido, pois o sistema fica pensando e retorna com erro daÃ..
Faça a depuração do código e veja em que linha o erro está ocorrendo. Mas tenho quase certeza que será na linha do Load ou na do For Each que tem logo abaixo.
Lembre uma vez achei uma API do google que fazia isso
Ele retorna para a linha abaixo:
cboUf = UCase$(X.childNodes(0).Text)
cboUf = UCase$(X.childNodes(0).Text)
cboUf é uma combo por acaso?
KERPLUNK, apesar de ter postado no Vbnet mas o código e Vb6.
Fiz uma adaptação no Vbnet e acusa o mesmo.
Quando o cep postado por ele sendo 92222-222 acontece o referido.
Usei o dois Visual.
Fiz uma adaptação no Vbnet e acusa o mesmo.
Quando o cep postado por ele sendo 92222-222 acontece o referido.
Usei o dois Visual.
Você precisa especificar a propriedade da combo ao qual deseja atribuir o valor. Você não pode atribuir um valor texto à um objeto combo.
Por mim foi usado Textbox e Combobox.
Não faz sentido usar Combobox se vai retornar apenas um registro.
O erro acontece com os dois componentes.
Vb6 e Vbnet.
Não faz sentido usar Combobox se vai retornar apenas um registro.
O erro acontece com os dois componentes.
Vb6 e Vbnet.
Citação::
cboUf é uma combo por acaso?
Isso...
Citação::
Por mim foi usado Textbox e Combobox.
Não faz sentido usar Combobox se vai retornar apenas um registro.
O erro acontece com os dois componentes.
Vb6 e Vbnet.
Não consegui testar ainda, irei fazer isso com um campo [ô]Text[ô] e aviso daqui a pouco...
Aqui o codigo do site funcionou normal....
Tópico encerrado , respostas não são mais permitidas