LISTBOX
Fiz o seguinte código para lista todos os dados do meu bd em sql em uma listbox, conforme vou digitando vai filtrando os dados
Também coloquei que: se o campo de texto estiver em branco o listbox não será visivil, mas também gostaria que, quando digitar um nome que ainda não esteja em meu banco de dados o listbox também não ficaria visivel.
Também tem outro porém, quando digito letra o mesmo faz o filtro procurando em toda a palavra, se caso tenha a meio da palavra a letra digitada, ela também aparece, e eu não queria assim, queria que de digitasse a letra [Ô]A[Ô] ele listava apenas paÃses que começasse com A.
espero ter sido claro.
Segue meu código:
Consegui fazer a busca por letras e o código ficou assim:
Só que agora precisava de outras coisas.
1º Quando digitar um nome que ainda não tenha em meu BD o listbox fosse envissÃvel.
Ex.
Se digitasse somente [Ô]p[Ô] listava todos os paises que começam por p
mas se digitar [Ô]pe[Ô] e não encontrar nenhum pais que inicie com essas letras o listbox não aparecia.
2º Quando terminasse de digitar todos o nome e fosse listado apenas 1 item no listbox também não seria visivel.
Também coloquei que: se o campo de texto estiver em branco o listbox não será visivil, mas também gostaria que, quando digitar um nome que ainda não esteja em meu banco de dados o listbox também não ficaria visivel.
Também tem outro porém, quando digito letra o mesmo faz o filtro procurando em toda a palavra, se caso tenha a meio da palavra a letra digitada, ela também aparece, e eu não queria assim, queria que de digitasse a letra [Ô]A[Ô] ele listava apenas paÃses que começasse com A.
espero ter sido claro.
Segue meu código:
Dim contador As Integer [ô]Contador de registos
contador = 0
Listanome.Visible = True
[ô]Limpa o listbox
Listanome.Items.Clear()
[ô] Texto de ligação à base de dados
Dim linha As String = Application.StartupPath & [Ô]\SIAF.mdf[Ô]
Dim myConnectionString As String = _
[Ô]Data source=.\SQLEXPRESS;AttachDbFilename=[Ô] & linha & [Ô];Integrated Security=True;User Instance=True[Ô]
Dim Con As SqlConnection = New SqlConnection(myConnectionString)
Con.Open()
Dim reader As SqlDataReader
Dim cmd As New SqlCommand([Ô]SELECT Pais FROM TBPais WHERE Pais LIKE [ô]%[Ô] & txtnome.Text & [Ô]%[ô] [Ô], Con)
reader = cmd.ExecuteReader
While reader.Read()
Listanome.Items.Add(reader([Ô]Pais[Ô])) [ô]Adiciona a pesquisa ao listbox
contador = contador + 1
Dim tamanho As Integer = 17 * contador
If txtnome.Text = [Ô][Ô] Then
Listanome.Visible = False [ô]Coloca o listbox invisivel
Else
[ô]Define o tamanho do listbox
If tamanho > [Ô]85[Ô] Then
Listanome.Height = [Ô]85[Ô]
Else
Listanome.Height = tamanho
End If
End If
End While
[ô]se não for encontrado nenhum regito não exibe o listbox.
[ô]Fecha as conexões
Con.Close()
reader.Close()
cmd.Dispose()
End Sub
Consegui fazer a busca por letras e o código ficou assim:
Dim contador As Integer [ô]Contador de registos
contador = 0
Listanome.Visible = True
[ô]Limpa o listbox
Listanome.Items.Clear()
[ô] Texto de ligação à base de dados
Dim linha As String = Application.StartupPath & [Ô]\SIAF.mdf[Ô]
Dim myConnectionString As String = _
[Ô]Data source=.\SQLEXPRESS;AttachDbFilename=[Ô] & linha & [Ô];Integrated Security=True;User Instance=True[Ô]
Dim Con As SqlConnection = New SqlConnection(myConnectionString)
Con.Open()
Dim reader As SqlDataReader
Dim cmd As New SqlCommand([Ô]SELECT * FROM TBPais WHERE Pais LIKE [ô][Ô] & txtnome.Text & [Ô]%[ô] [Ô], Con)
reader = cmd.ExecuteReader
While reader.Read()
Listanome.Items.Add(reader([Ô]Pais[Ô])) [ô]Adiciona a pesquisa ao listbox
contador = contador + 1
Dim tamanho As Integer = 17 * contador
If txtnome.Text = [Ô][Ô] Then
Listanome.Visible = False [ô]Coloca o listbox invisivel
Else
[ô]Define o tamanho do lis
If tamanho > [Ô]85[Ô] Then
Listanome.Height = [Ô]85[Ô]
Else
Listanome.Height = tamanho
End If
End If
End While
[ô]Fecha as conexões
Con.Close()
reader.Close()
cmd.Dispose()
Só que agora precisava de outras coisas.
1º Quando digitar um nome que ainda não tenha em meu BD o listbox fosse envissÃvel.
Ex.
Se digitasse somente [Ô]p[Ô] listava todos os paises que começam por p
mas se digitar [Ô]pe[Ô] e não encontrar nenhum pais que inicie com essas letras o listbox não aparecia.
2º Quando terminasse de digitar todos o nome e fosse listado apenas 1 item no listbox também não seria visivel.
1 Use o IF isnull
ou coloque visible = true dentro do while
2 Use o IF MID(-1(len(campo)) = [Ô] [Ô] then
Espero telo ajudado valeu..
ou coloque visible = true dentro do while
2 Use o IF MID(-1(len(campo)) = [Ô] [Ô] then
Espero telo ajudado valeu..
colega posta esta sua duvida no forum vb.net eles te ajudarão, seu codigo é .net e não vb6 ou vba
porque na realidade você terá de fazer uma verificação na consulta, o que em vb6 ficaria assim
porque na realidade você terá de fazer uma verificação na consulta, o que em vb6 ficaria assim
If (RS.EOF And RS.BOF) then List1.Visible = False
Tópico encerrado , respostas não são mais permitidas