AUTO COMPLETAR PESQUISANDO NA TABELA
Alguem tem algum codigo em vb 2010 para digitar no text.box o Nome de uma pessoa de uma tabela Nome do banco e ir autocompletando.
ou seja consultando a tabela .Tenho este codigo em vb 6 mas em vb 2010 não sei como utilizar pq. uso tb o mysql.
Private Sub Text1_Change()
Dim Pos As Integer
If Text1.SelStart = 0 Then Exit Sub
On Error Resume Next
Set Tabela = BDados.OpenRecordset([Ô]SELECT TOP 1 Nome FROM CadastroGeral WHERE Nome Like [ô][Ô] & Mid(Text1.Text, 1, Text1.SelStart) & [Ô]*[ô] ORDER BY Nome Asc[Ô])
Pos = Text1.SelStart
Text1.Text = Tabela([Ô]Nome[Ô])
Text1.SelStart = Pos
Text1.SelLength = Len(Text1)
Text11.Text = Text1.Text
End Sub
Private Sub Text1_GotFocus()
Text1.SelStart = 0
Text1.SelLength = Len(Text1)
List1.Visible = False
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
On Error Resume Next
If KeyCode = 8 Then [ô]Backspace
Text1.SelStart = Text1.SelStart - 1
Text1.SelLength = Len(Text1)
ElseIf KeyCode = 27 Then [ô]Esc
Text1.Text = Empty
ElseIf KeyCode = 40 Then [ô]Seta para Baixo
If List1.Visible = True Then
List1.Text = Text1.Text
List1.Visible = False
Else
Set Tabela = BDados.OpenRecordset([Ô]SELECT Nome FROM CadastroGeral WHERE Nome Like [ô][Ô] & Mid(Text1.Text, 1, Text1.SelStart) & [Ô]*[ô] ORDER BY Nome Asc[Ô])
List1.Clear
Do Until Tabela.EOF
DoEvents
List1.AddItem Tabela([Ô]Nome[Ô])
Tabela.MoveNext
Loop
If Tabela.RecordCount > 8 Then List1.Height = 225 * 8 Else List1.Height = 225 * Tabela.RecordCount
List1.Visible = True
List1.Text = Text1.Text
List1.SetFocus
End If
End If
End Sub
Private Sub List1_Click()
Text1.Text = List1.Text
End Sub
Private Sub List1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 27 Then [ô]Esc
Text1.SetFocus
ElseIf KeyCode = 13 Then
Text1.Text = List1.Text
Text1.SetFocus
End If
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
KeyAscii = 0
SendKeys [Ô]{TAB}[Ô]
Tabela1.Seek [Ô]=[Ô], Text11.Text
If Tabela1.NoMatch Then
MsgBox [Ô]Cliente não tem cadastro ![Ô], vbCritical, [Ô]Sistema de Controle[Ô]
Else
txtcodigo.Text = IIf(IsNull(Tabela1([Ô]Codigo[Ô])), [Ô] [Ô], Tabela1([Ô]Codigo[Ô]))
Call visivel
cmdacao(0).Enabled = True
End If
End If
End Sub
Minha conexão ao banco segue da seguinte forma:
Dim cs As String = My.Settings.locacaoConnectionString
Dim conect As New MySqlConnection
conect.ConnectionString = cs
conect.Open()
Dim seletor As New MySqlCommand
seletor.Connection = conect
seletor.CommandText = [Ô]select * from cadastroclientes where nome like [ô]%[Ô] & txtnome.Text & [Ô]%[ô][Ô]
seletor.CommandType = CommandType.Text
ou seja consultando a tabela .Tenho este codigo em vb 6 mas em vb 2010 não sei como utilizar pq. uso tb o mysql.
Private Sub Text1_Change()
Dim Pos As Integer
If Text1.SelStart = 0 Then Exit Sub
On Error Resume Next
Set Tabela = BDados.OpenRecordset([Ô]SELECT TOP 1 Nome FROM CadastroGeral WHERE Nome Like [ô][Ô] & Mid(Text1.Text, 1, Text1.SelStart) & [Ô]*[ô] ORDER BY Nome Asc[Ô])
Pos = Text1.SelStart
Text1.Text = Tabela([Ô]Nome[Ô])
Text1.SelStart = Pos
Text1.SelLength = Len(Text1)
Text11.Text = Text1.Text
End Sub
Private Sub Text1_GotFocus()
Text1.SelStart = 0
Text1.SelLength = Len(Text1)
List1.Visible = False
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
On Error Resume Next
If KeyCode = 8 Then [ô]Backspace
Text1.SelStart = Text1.SelStart - 1
Text1.SelLength = Len(Text1)
ElseIf KeyCode = 27 Then [ô]Esc
Text1.Text = Empty
ElseIf KeyCode = 40 Then [ô]Seta para Baixo
If List1.Visible = True Then
List1.Text = Text1.Text
List1.Visible = False
Else
Set Tabela = BDados.OpenRecordset([Ô]SELECT Nome FROM CadastroGeral WHERE Nome Like [ô][Ô] & Mid(Text1.Text, 1, Text1.SelStart) & [Ô]*[ô] ORDER BY Nome Asc[Ô])
List1.Clear
Do Until Tabela.EOF
DoEvents
List1.AddItem Tabela([Ô]Nome[Ô])
Tabela.MoveNext
Loop
If Tabela.RecordCount > 8 Then List1.Height = 225 * 8 Else List1.Height = 225 * Tabela.RecordCount
List1.Visible = True
List1.Text = Text1.Text
List1.SetFocus
End If
End If
End Sub
Private Sub List1_Click()
Text1.Text = List1.Text
End Sub
Private Sub List1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 27 Then [ô]Esc
Text1.SetFocus
ElseIf KeyCode = 13 Then
Text1.Text = List1.Text
Text1.SetFocus
End If
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
KeyAscii = 0
SendKeys [Ô]{TAB}[Ô]
Tabela1.Seek [Ô]=[Ô], Text11.Text
If Tabela1.NoMatch Then
MsgBox [Ô]Cliente não tem cadastro ![Ô], vbCritical, [Ô]Sistema de Controle[Ô]
Else
txtcodigo.Text = IIf(IsNull(Tabela1([Ô]Codigo[Ô])), [Ô] [Ô], Tabela1([Ô]Codigo[Ô]))
Call visivel
cmdacao(0).Enabled = True
End If
End If
End Sub
Minha conexão ao banco segue da seguinte forma:
Dim cs As String = My.Settings.locacaoConnectionString
Dim conect As New MySqlConnection
conect.ConnectionString = cs
conect.Open()
Dim seletor As New MySqlCommand
seletor.Connection = conect
seletor.CommandText = [Ô]select * from cadastroclientes where nome like [ô]%[Ô] & txtnome.Text & [Ô]%[ô][Ô]
seletor.CommandType = CommandType.Text
Amigao, nao tenho o código, mas use threads para realizar a pesquisa no banco e o evento keypress (textbox) para exibir o resultado!!..pesquise sobre isso que irá conseguir o que precisa!!
Tópico encerrado , respostas não são mais permitidas