Coloque no form um list e um textbox chamado (Descrição):
‘General – declarations
Private Const LB_SETTABSTOPS = &H192 ' tabular lista
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long ' tabular lista
Dim Tbcadastro As Recordset
Dim BancoDeDados As Database
Private Sub Descricao_Change()
'Faz a pesquisa por Nome no Banco de Dados
'utilizando SQL. Note que essa procedure é
'executada quando alguma alteração ocorre na
'caixa de texto (quando o usuário digita
'alguma coisa). O texto disponível nessa caixa
'de texto é utilizado na pesquisa SQL,
'verificando os nomes que começam com as letras
'digtadas. Os nomes encontrados são apresentados
'em um ListBox. Por exemplo, podemos pesquisar
'todos os nomes que começam com José ou com Jo .
'Nesse sgundo caso, serão apresentados nomes tais
'como José, João, Joana, etc. Ao clicar sobre um nome
'no ListBox, serão apresentados os dados referentes a
'ao aluno selecionado.
'Declaramos as variáveis utilizadas.
Dim Dado As String, Mensagem As String
Dim Consulta_SQL As String
Dim resultado As String
Dim Contador As Integer, Total_encontrado As Integer
'"Zeramos" as variáveis utilizadas
'para colocar os nomes encontrados
'dentro do ListBox.
Contador = 0
Total_encontrado = 0
'Limpamos o ListBox.
List1.Clear
'O nome (ou o início dele) a ser
'pesquisado é atribído à variável Dado.
Dado = Descricao.Text
'Monta o comando SQL e o armazena na String Consulta_SQL.
'Veja que após o nome pesquisado é colocado um asterístico
'Dado + "*'", para indicar que podem existir outras letras
'além das especificadas.
Consulta_SQL = "SELECT * " _
+ "FROM CADASTRO " _
+ "WHERE nome LIKE '*" _
+ Dado + "*'" _
+ "ORDER BY nome;"
'A variável Cadastro (definida como sendo do tipo Recordset
'em General - Declarations) recebe o resultado da pesquisa
'SQL montada em Consulta_SQL .
'
Set Tbcadastro = BancoDeDados.OpenRecordset(Consulta_SQL, dbOpenDynaset)
'Agora, testamos o valor da propriedade AbsolutePosition
'a qual nos indica o sucesso ou não da pesquisa, conforme
'comentado anteriormente.
'Verificamos o total de Cadastros encontrados.
Total_encontrado = Tbcadastro.RecordCount
'Em seguida, apresentamos esse
'total na caixa de texto Registro.
Registro.Text = Total_encontrado
'Alteramos o ToolTip (aquela barra amarela
'com algum texto explicativo, a qual é
'apresentada quando passamos com o mouse sobre
'um objeto - botão, caixa de texto, listbox. etc.
If Total_encontrado > 1 Then
'Caso tenha sido encontrado algum aluno,
'ajustamos o seguinte ToolTip.
List1.ToolTipText = "Clique em um dos Clientes " + _
"disponíveis para verificar dados completos."
Else
'Entretanto, caso a pesquisa não encontre
'pelo menos um aluno com o nome especificado,
'alteramos o ToolTip para o seguinte texto:
List1.ToolTipText = "Nenhum Cliente disponível."
End If
'O loop Do...Until, utilizado a seguir,
'coloca os nomes encontrado no ListBox.
Do
'É feito um teste para verificar a posição
'absoluta do registro que será mostrado.
'Esse teste é apenas uma precaução para que
'não se tente mostrar um registro inexistente.
If Tbcadastro.AbsolutePosition > -1 Then
'Adiciona o nome encontrado no ListBox.
Dim Tabs(1 To 3) As Long
Tabs(1) = 0
'Tabs(2) = 60 'Onde 0,e 60,e 200, é o numero de caracteres'
'Tabs(3) = 200
SendMessage List1.hWnd, LB_SETTABSTOPS, 3, Tabs(1)
List1.AddItem Tbcadastro("Nome")
'A variável Contador (zerada no início desta
'procedure) é incrementada. Ela está sendo
'utilizada para contar o total de registros
'apresentados aos usuários.
Contador = Contador + 1
'Como a pesquisa SQL foi ordenada por descricao
'(veja o trecho final da instrução SQL ORDER BY Nome;)
'agora vamos para o próximo registro,
'utilizando a instrução MoveNext.
Tbcadastro.MoveNext
End If
'O loop Do...Loop Until é executado enquanto o
'Contador for menor ou igual ao total de resgistros
'encontrados (utilizando a variável Total_encontrado)
Loop Until Contador >= Total_encontrado
End Sub
Private Sub List1_Click()
'Declara as variáveis utilizadas.
Dim Dado As String
Dim Consulta_SQL As String
Dim resultado As String
Dado = List1.Text
Consulta_SQL = "SELECT * FROM CADASTRO WHERE nome = '" _
+ Dado + "' "
Set Tbcadastro = BancoDeDados.OpenRecordset(Consulta_SQL, dbOpenDynaset)
If Tbcadastro.AbsolutePosition > -1 Then
'Mostramos o nome encontrado
NomeCliente.Text = Tbcadastro("Nome")
Else
resultado = MsgBox("Descrição não encontrada.", vbInformation)
End If
End Sub