AUTO COMPLETAR COM TEXTBOX ???
Olá pessoal!
Como fazer um campo textbox auto comletar ?
Obrigado.
Como fazer um campo textbox auto comletar ?
Obrigado.
Até que tem. Um exemplo simples pode ser assim:
Com algumas alterações, e acrescidos os tratamentos possÃveis á KeyPress, pode ser adaptado para que a lista venha desde uma base de dados, e mais alterado ainda, pode ser um UserControl similar á um TextBox.
Option Explicit
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim sText As String
Dim xText As String
With Text1
If Not (KeyAscii = vbKeyBack Or _
KeyAscii = vbKeyEscape Or _
KeyAscii = vbKeyReturn) Then
If .SelLength > 0 Then
sText = Left$(.Text, .SelStart) & Chr$(KeyAscii)
Else
sText = .Text & Chr$(KeyAscii)
End If
xText = Completa(sText)
If (Len(Trim$(xText)) = 0) Then
.SelStart = Len(sText)
.SelLength = Len(.Text) - .SelStart + 1
Else
.Text = xText
.SelStart = Len(xText) + 1
End If
KeyAscii = 0
End If
End With
End Sub
Public Function Completa(procura As String) As String
Dim m(10) As String
m(0) = [Ô]koolsid[Ô]
m(1) = [Ô]hack[Ô]
m(2) = [Ô]vbfnewcomer[Ô]
m(3) = [Ô]luca[Ô]
m(4) = [Ô]let me in[Ô]
m(5) = [Ô]blah blah[Ô]
m(6) = [Ô]kool[Ô]
m(7) = [Ô]hacker[Ô]
m(8) = [Ô]ataba[Ô]
m(9) = [Ô]Etc...[Ô]
Dim ret As String
Dim iPos As Long
For iPos = 0 To UBound(m)
If (LCase(Mid$(m(iPos), 1, Len(procura))) = LCase$(procura)) Then
ret = m(iPos)
Exit For
End If
Next
Completa = ret
End Function
Com algumas alterações, e acrescidos os tratamentos possÃveis á KeyPress, pode ser adaptado para que a lista venha desde uma base de dados, e mais alterado ainda, pode ser um UserControl similar á um TextBox.
Coloca um Listbox no form e preenche o mesmo de acordo com os dados que queres:
[ô]No evento Form_Load
[ô]Preenche o Listbox
CON_NOTA [ô]sub conexão
Dim Tbsql As New ADODB.Recordset
Dim CONSULTASQL As String
CONSULTASQL = [Ô]SELECT * from TAB_PRODUTOS order by codigo asc[Ô] [ô]seleciona o campo desejado (no exemplo [Ô]codigo[Ô])
Set Tbsql = CON.Execute(CONSULTASQL)
Do Until Tbsql.EOF
List1.AddItem Tbsql([Ô]codigo[Ô])
Tbsql.MoveNext
Loop
[ô]No evento Change do campo desejado
[ô]codigo é o textbox para auto completar
Dim POS As Long
List1.ListIndex = SendMessage(List1.hWnd, LB_FINDSTRING, -1, ByVal CStr(codigo.Text))
If List1.ListIndex = -1 Then
POS = codigo.SelStart
Else
POS = codigo.SelStart
codigo.Text = List1
codigo.SelStart = POS
codigo.SelLength = Len(codigo.Text) - POS
End If
[ô]No evento Form_Load
[ô]Preenche o Listbox
CON_NOTA [ô]sub conexão
Dim Tbsql As New ADODB.Recordset
Dim CONSULTASQL As String
CONSULTASQL = [Ô]SELECT * from TAB_PRODUTOS order by codigo asc[Ô] [ô]seleciona o campo desejado (no exemplo [Ô]codigo[Ô])
Set Tbsql = CON.Execute(CONSULTASQL)
Do Until Tbsql.EOF
List1.AddItem Tbsql([Ô]codigo[Ô])
Tbsql.MoveNext
Loop
[ô]No evento Change do campo desejado
[ô]codigo é o textbox para auto completar
Dim POS As Long
List1.ListIndex = SendMessage(List1.hWnd, LB_FINDSTRING, -1, ByVal CStr(codigo.Text))
If List1.ListIndex = -1 Then
POS = codigo.SelStart
Else
POS = codigo.SelStart
codigo.Text = List1
codigo.SelStart = POS
codigo.SelLength = Len(codigo.Text) - POS
End If
Amigos, alguem pode me ajudar com isso, queria aquela pesquisa dinamica sabe, que busca a coluna de nome no banco de dados acess, alguem pode passar um passo a passo ou dizer onde encontro, sou novato e num sei de nada ainda rsrs..
obrigado.
obrigado.
Vou te dar uma dica muito simples e eficaz! rsrsrs
se vc estiver utilizando um Data Control pode fazer o seguinte:
Utilize este código no evento change do textbox
Private sub Text1_change()
Dim SQL as String
Dim Criterio as String
Criterio = Chr$(39) & Text1.Text & [Ô]*[Ô] & Chr(39)
SQL = [Ô]Select * From sua_tabela Where coluna_para_fazer_Pesquisa Like[Ô] & Criterio
Data1.RecordSource = SQL
Data1.Refresh
End Sub
Este código fará com que a pesquisa seja realizada na hora em que digitar uma letra, ou seja, se vc digitar a letra [Ô]A[Ô] serão filtrados todos os registros que começam com a letra [Ô]A[Ô]. Depois digitando a letra [Ô]L[Ô] ou seja [Ô]AL[Ô] serão filtrados todos os registros que começam com as letras [Ô]AL[Ô]. Daà vc vai digitando até achar o registro certo. Ex: Digitando [Ô]ALICE[Ô], você terá todas as alices gravadas no seu banco de dados.
Mas não se esqueça que o text1 não pode estar vinculado a nenhum field de banco de dados muito menos ao data control. ;)
se vc quiser pode colocar esse código no evento click de um botão. a diferença é que a pesquisa só será realizada quando vc clicar neste botão e não quando for digitando.
você também pode utilizar esses comandos SQL em outros controles de acesso a dados. Mas não exatamente assim. rsrsrs
Pode também utilizar uma instrução SQL para filtrar como é feito no dataenvironment:
DataEnvironment1.Rs_comand_do_DataEnvironment.Filter = [Ô]Campo_tabela Like [ô] [Ô] & text1.text & [Ô] %[ô] [Ô]
viu só! com uma simples linha!
se vc estiver utilizando um Data Control pode fazer o seguinte:
Utilize este código no evento change do textbox
Private sub Text1_change()
Dim SQL as String
Dim Criterio as String
Criterio = Chr$(39) & Text1.Text & [Ô]*[Ô] & Chr(39)
SQL = [Ô]Select * From sua_tabela Where coluna_para_fazer_Pesquisa Like[Ô] & Criterio
Data1.RecordSource = SQL
Data1.Refresh
End Sub
Este código fará com que a pesquisa seja realizada na hora em que digitar uma letra, ou seja, se vc digitar a letra [Ô]A[Ô] serão filtrados todos os registros que começam com a letra [Ô]A[Ô]. Depois digitando a letra [Ô]L[Ô] ou seja [Ô]AL[Ô] serão filtrados todos os registros que começam com as letras [Ô]AL[Ô]. Daà vc vai digitando até achar o registro certo. Ex: Digitando [Ô]ALICE[Ô], você terá todas as alices gravadas no seu banco de dados.
Mas não se esqueça que o text1 não pode estar vinculado a nenhum field de banco de dados muito menos ao data control. ;)
se vc quiser pode colocar esse código no evento click de um botão. a diferença é que a pesquisa só será realizada quando vc clicar neste botão e não quando for digitando.
você também pode utilizar esses comandos SQL em outros controles de acesso a dados. Mas não exatamente assim. rsrsrs
Pode também utilizar uma instrução SQL para filtrar como é feito no dataenvironment:
DataEnvironment1.Rs_comand_do_DataEnvironment.Filter = [Ô]Campo_tabela Like [ô] [Ô] & text1.text & [Ô] %[ô] [Ô]
viu só! com uma simples linha!
Tópico encerrado , respostas não são mais permitidas