USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Consulta Dificil
Korn
não registrado
Postada em 28/02/2006 15:21 hs   
Pessoal to com uma bomba aki que parecia ser facil mas esta dando erro , eu tenho um listview com as seguintes colunas abaixo uma delas "Proprietario do Imovel" nesta coluna eu pego o Nome de um certo Proprietario de um produto ,  gostaria de filtrar esse listview atraves dessa consulta atraves do inputBox eu escreveria um NOme Qualquer e seria filtrado no listview todos que tivesse o Mesmo Nome, mas numa coisa tao simples nao funciona, da erro ,eu nunca vi esse erro na vida e pelo que me parece nao fiz nada de errado alguem poderia dar uma olhada no codigo pra ver se acha alguma falha minha obrigado pessoal conto com a ajuda de vcs
erro
"ADO nao pode encontrar o objeto na colecao correspondente ao nome ou a referencia ordinal solicitada pelo aplicativo "

'no form load
Set rsB = New ADODB.Recordset
  
   ListView1.ColumnHeaders.Clear
    ListView1.ColumnHeaders.Add , , "", 0
    ListView1.ColumnHeaders.Add , , "Tipo", 1700
    ListView1.ColumnHeaders.Add , , "Código", 0
    ListView1.ColumnHeaders.Add , , "Proprietário do Imovel", 3000
    ListView1.ColumnHeaders.Add , , "Código do Imóvel", 1800
    ListView1.ColumnHeaders.Add , , "Nome do Inquilino", 3000
o botao para consultar
Private Sub Command4_Click()
STRBUSCA = InputBox("Digite o Nome do Cliente...", "Localizar dados")
If STRBUSCA = Empty Then Exit Sub
'filtrando os dados
rsB.Filter = "Nome LIKE '" & STRBUSCA & "%'"
Call VerificaNome
End Sub
 

Public Sub VerificaNome()
'seto recordset
    Set rsB = New adodb.Recordset
       
    rsB.Open "SELECT Codigo, Nome " & _
    "FROM Tbl_Proprietarios ORDER BY Nome ", cnBd, adOpenKeyset, adLockPessimistic
       
      'Limpando os valores atuais da lista
      ListView1.ListItems.Clear
Dim Lst As ListItem
Do While Not rsB.EOF
   
    Set Lst = ListView1.ListItems.Add
    With Lst
             
.Text = rsB(0) 'CODIGO
.SubItems(3) = rsB(3) ' aki da o erro , nessa linha

        
        End With
    rsB.MoveNext
Loop
Set Lst = Nothing
End Sub
     
kerplunk
Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
Postada em 01/03/2006 07:26 hs         
Esse Filter não funciona muito bem com ADO. O negócio é reinstanciar o recordset e preencher o grid de novo.
     
Korn
Pontos: 2843
SAO PAULO
SP - BRASIL
Postada em 01/03/2006 15:18 hs            
Muito obrigado Kerplunk
 
Ae pessoal com a ajuda do amigo kerplunk me ajudou a fazer isso tipo assim
 
No botao Consulta
Dim rsB1 As New ADODB.Recordset
Set rsB1 = New ADODB.Recordset
 STRBUSCA = InputBox("Digite o Nome do Cliente...", "Localizar Dados")
If STRBUSCA = Empty Then Exit Sub

rsB1.Open "select  * from Tbl_Proprietarios where Nome = '" & Nome & "'", cnBd, adOpenKeyset, adLockPessimistic
Call VerificaNome
 
 
e na public sub
 
Set rsB1 = New ADODB.Recordset
  
rsB1.Open "select * from Tbl_Proprietarios where Nome = '" & Nome & "'", cnBd, adOpenKeyset, adLockPessimistic
    ListView1.ListItems.Clear
Dim Lst As ListItem
Do While Not rsB1.EOF
    Set Lst = ListView1.ListItems.Add
    With Lst
.Text = rsB1(0)
.SubItems(3) = rsB1(3)
    End With
    rsB1.MoveNext
Loop
Set Lst = Nothing
 
mas agora pessoal nao acontece nada liga eu faço a pesquisa pelo nome tipo Lucia Andrade , e mesmo se tiver resultado o listview fica em branco entende , nao aparece nada , alguem pode me ajudar mais essa vez ai , valew

Jesus Cristo é O Senhor!!!
     
Elieser Topassi
Pontos: 2843 Pontos: 2843
SÃO JOSÉ DO RIO PRETO
SP - BRASIL
Postada em 02/03/2006 07:37 hs            
Korn, vou te falar o porque do primeiro erro: presta atençao nessa linha:
rsB.Open "SELECT Codigo, Nome FROM Tbl_Proprietarios ORDER BY Nome " (...)
 
Ai vc ta abrindo o recorset com apenas 2 colunas (Codigo e Nome)
mas na linha abaixo vc ta pedindo a coluna de indice 3 (quarta coluna)...
.SubItems(3) = rsB(3) ' aki da o erro , nessa linha
 
Posso estar enganado, mas acho q o q vc queria era o seguinte:
.SubItems(3) = rsB(1) ' aki da o erro , nessa linha
 
Quando a segunda questao, de nao estar retornando nenhuma linha na pesquisa, coloca um * depois do nome na consulta, e troca o = por LIKE... Sem ver a situação-problema de perto, nao da pra garantir qual o erro, mas pode ser isso...
rsB1.Open "select * from Tbl_Proprietarios where Nome LIKE '" & Nome & "*'"
 
Vou explicar: 1) o operador = é comparação binaria... já o LIKE vai fazer a comparação por aproximação (o correto para comparar strings)... 2) O * no final do nome não é obrigatorio, mas na minha opniao é muito util, pois permite fazer a pesquisa apenas pelo inicio do nome, dando mais flexibilidade...


Elieser Carlos Topassi
Analista de Sistemas - Desenvolvedor VB/ASP/.Net

e-mail/msn:
elieser_topassi@yahoo.com.br
São José do Rio Preto,SP - Brasil
_____________________________________________________
Emoções "O caminho do tolo aos seus prórios olhos lhe parece reto, mas o sábio ouve conselhos" (Pv 12:15)

     
Korn
Pontos: 2843
SAO PAULO
SP - BRASIL
Postada em 02/03/2006 09:32 hs            
Blz Elieser mas o negocio é q eu mudei pro jeito que vc falou mas continua nao voltando nada para o listview veja como ficou
 
Public Sub VerificaNome()
Set rsB1 = New adodb.Recordset
rsB1.Open "select * from Tbl_Proprietarios where Nome LIKE '" & Nome & "*'", cnBd, adOpenKeyset, adLockPessimistic
   
    ListView1.ListItems.Clear
Dim Lst As ListItem
Do While Not rsB1.EOF
    Set Lst = ListView1.ListItems.Add
    With Lst
   
.Text = rsB1(0)
.SubItems(1) = rsB1(1)
.SubItems(2) = rsB1(2)
.SubItems(3) = rsB1(3)
.SubItems(4) = rsB1(4)
.SubItems(5) = rsB1(5)
.SubItems(6) = rsB1(6)
.SubItems(7) = rsB1(7)
.SubItems(8) = rsB1(8)
.SubItems(9) = rsB1(9)
.SubItems(10) = rsB1(10)
.SubItems(11) = rsB1(11)
.SubItems(12) = rsB1(12)
.SubItems(13) = rsB1(13)
.SubItems(14) = rsB1(14)
.SubItems(15) = rsB1(15)
.SubItems(16) = rsB1(16)
.SubItems(17) = rsB1(17)
    End With
    rsB1.MoveNext
Loop
Set Lst = Nothing
End Sub

Jesus Cristo é O Senhor!!!
     
Delcio (DelSf)
SANTO ANDRÉ
SP - BRASIL
Postada em 02/03/2006 09:37 hs         
No like se for Dao seria * mas no ADO se usa %
     
Página(s): 1/3      PRÓXIMA »


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página