PESQUISA EM COMBO BOX NAO PELO INICIO
GENTE., pesquisar num combo box eh barbada. ja fiz a pesquisa onde ele procura pelo inicio, vai axando vai completando, o problema eh q tenho um combo onde fica assim:
1 |A
2 |B
3 |C
4 |D
dai kero pesquisar a partir do [Ô] | [Ô] ..
se digitar A ele seta no primeiro item e assim por diante..
ajudem!
desde ja agradeço
1 |A
2 |B
3 |C
4 |D
dai kero pesquisar a partir do [Ô] | [Ô] ..
se digitar A ele seta no primeiro item e assim por diante..
ajudem!
desde ja agradeço
Estes dados vêm de um banco de dados, certo?
o combo ja esta populadoo... e ja tenho a rotina q pesquina pelo inicio... mas tem um clinete xato q quer pesquisar pelo nome , e n kero mudar todos os carregamentos invertendo .. nome | codigo ..
Amigo, pesquisa, se faz contra O BANCO. A combo estando ou não populada, é irrelevante. Precisa fazer pesquisa, pesquisa no banco, traga os resultados e preencha a combo.
n cara; tu n entendeu. o COMBO JA ESTA POPULADO com as informações do banco.. ja popolei, dai kero pesquisar no conteudo JA CARREGADO! apartir de certo ponto..
for i% = 0 to cmdSEUCOMBO.items.count -1
if cmdSEUCOMBO(i%) = [Ô]VALOR PROCURADO[Ô] Then
msgbox [Ô]encontrei[Ô]
end if
next i%
Mas você nunca vai desenvolver nada realmente bem feito pensando dessa forma... sem ofensas...
if cmdSEUCOMBO(i%) = [Ô]VALOR PROCURADO[Ô] Then
msgbox [Ô]encontrei[Ô]
end if
next i%
Mas você nunca vai desenvolver nada realmente bem feito pensando dessa forma... sem ofensas...
Poste como você faz a consulta atualmente, para podermos adaptar.
esse codigo pesquisa no inicio... QUEREMOS PROCURAR a PARTIR DO [Ô] |[Ô] ..
Sub ProcuraCbo(Cbo As ComboBox)
Dim PEsq As String
Dim Aux As String
If Cbo.ListCount > 0 And Len(Cbo.Text) > 0 Then
x = Len(Cbo.Text)
PEsq = [Ô]N[Ô]
Aux = Cbo.Text
I = 0
For I = 0 To Cbo.ListCount - 1
If UCase(Aux) = UCase(Mid(Cbo.List(I), 1, x)) Then
Cbo.Text = Cbo.List(I)
Cbo.SelStart = x
Cbo.SelLength = Len(Cbo.Text) - x
PEsq = [Ô]S[Ô]
Exit For
End If
Next
If PEsq = [Ô]N[Ô] Then
ChvCbo = [Ô]N[Ô]
Cbo.Text = [Ô][Ô]
Else
ChvCbo = [Ô]S[Ô]
End If
Else
If Cbo.ListCount < 1 Then
Cbo.Text = [Ô][Ô]
End If
End If
End Sub
Sub ProcuraCbo(Cbo As ComboBox)
Dim PEsq As String
Dim Aux As String
If Cbo.ListCount > 0 And Len(Cbo.Text) > 0 Then
x = Len(Cbo.Text)
PEsq = [Ô]N[Ô]
Aux = Cbo.Text
I = 0
For I = 0 To Cbo.ListCount - 1
If UCase(Aux) = UCase(Mid(Cbo.List(I), 1, x)) Then
Cbo.Text = Cbo.List(I)
Cbo.SelStart = x
Cbo.SelLength = Len(Cbo.Text) - x
PEsq = [Ô]S[Ô]
Exit For
End If
Next
If PEsq = [Ô]N[Ô] Then
ChvCbo = [Ô]N[Ô]
Cbo.Text = [Ô][Ô]
Else
ChvCbo = [Ô]S[Ô]
End If
Else
If Cbo.ListCount < 1 Then
Cbo.Text = [Ô][Ô]
End If
End If
End Sub
AE GALERA . consegui valeu a atenção .. VEJAM ABAIXO COMO FICOU E FUNCIONA PERFEITAMENTE;
ao invez da chamada da rotina estar no CHANGE DO COMBO esta no KEYUP !
Sub ProcuraCbo_TESTE(Cbo As ComboBox, depoisDe As String)
Dim PEsq As String
Dim Aux As String
If Cbo.ListCount > 0 And Len(Cbo.Text) > 0 Then
x = Len(Cbo.Text)
PEsq = [Ô]N[Ô]
xPESQ = InStr(1, Cbo.Text, depoisDe)
If xPESQ = 0 Then
Aux = Cbo.Text
Else
Aux = Mid(Cbo.Text, xPESQ + 1, x)
End If
I = 0
For I = 0 To Cbo.ListCount - 1
xPESQ = InStr(1, Cbo.List(I), depoisDe)
If UCase(Aux) = UCase(Mid(Cbo.List(I), xPESQ + 1, Len(Aux))) Then
Cbo.Text = Cbo.List(I)
Cbo.SelStart = xPESQ + Len(Aux)
Cbo.SelLength = Len(Cbo.Text) - xPESQ
PEsq = [Ô]S[Ô]
Exit For
End If
Next
If PEsq = [Ô]N[Ô] Then
ChvCbo = [Ô]N[Ô]
Cbo.Text = [Ô][Ô]
Else
ChvCbo = [Ô]S[Ô]
End If
Else
If Cbo.ListCount < 1 Then
Cbo.Text = [Ô][Ô]
End If
End If
End Sub
VALEU
ao invez da chamada da rotina estar no CHANGE DO COMBO esta no KEYUP !
Sub ProcuraCbo_TESTE(Cbo As ComboBox, depoisDe As String)
Dim PEsq As String
Dim Aux As String
If Cbo.ListCount > 0 And Len(Cbo.Text) > 0 Then
x = Len(Cbo.Text)
PEsq = [Ô]N[Ô]
xPESQ = InStr(1, Cbo.Text, depoisDe)
If xPESQ = 0 Then
Aux = Cbo.Text
Else
Aux = Mid(Cbo.Text, xPESQ + 1, x)
End If
I = 0
For I = 0 To Cbo.ListCount - 1
xPESQ = InStr(1, Cbo.List(I), depoisDe)
If UCase(Aux) = UCase(Mid(Cbo.List(I), xPESQ + 1, Len(Aux))) Then
Cbo.Text = Cbo.List(I)
Cbo.SelStart = xPESQ + Len(Aux)
Cbo.SelLength = Len(Cbo.Text) - xPESQ
PEsq = [Ô]S[Ô]
Exit For
End If
Next
If PEsq = [Ô]N[Ô] Then
ChvCbo = [Ô]N[Ô]
Cbo.Text = [Ô][Ô]
Else
ChvCbo = [Ô]S[Ô]
End If
Else
If Cbo.ListCount < 1 Then
Cbo.Text = [Ô][Ô]
End If
End If
End Sub
VALEU
Tópico encerrado , respostas não são mais permitidas