AUTOCOMPLETAR COMBO
Galera preciso da ajuda de voces novamente!
tenho uma combobox preenchida com produtos cadastrados no meu sistema, e preciso que ao se digita na combo ela filtre seu conteudo de acordo com o digitado. ate ai tudo bem. tinha achado um codigo aqui no vbm que funcionava corretamente. mas tive que fazer algumas alterações pois as vezes tinha 2 produtos com o mesmo nome cadastrado entao resolvi colocar alem no nome do produtos, tambem o seu codigo, marca e valor.
de forma que fica assim na combo
codigo | produto - marca | valor
001 | celeron d - intel | R$ 150,00
eu preciso da ajuda de voces que quando o usuario digite o nome do produto a combo ordene sua lista por produtos que o nome comece pelo digitado, ignorando o codigo!
alguem ai tem alguma ideia?
tenho uma combobox preenchida com produtos cadastrados no meu sistema, e preciso que ao se digita na combo ela filtre seu conteudo de acordo com o digitado. ate ai tudo bem. tinha achado um codigo aqui no vbm que funcionava corretamente. mas tive que fazer algumas alterações pois as vezes tinha 2 produtos com o mesmo nome cadastrado entao resolvi colocar alem no nome do produtos, tambem o seu codigo, marca e valor.
de forma que fica assim na combo
codigo | produto - marca | valor
001 | celeron d - intel | R$ 150,00
eu preciso da ajuda de voces que quando o usuario digite o nome do produto a combo ordene sua lista por produtos que o nome comece pelo digitado, ignorando o codigo!
alguem ai tem alguma ideia?
Olá amigo ...
Bem ... o correto mesmo é vc corrigir a redundância no cadastro .... mas se não tiver jeito ... tenta colocar a descrição do produto primeiro e depois o código ...
Se estiver preenchendo o combo na mão ... define a ordem pela descrição crescente + o código
Bem ... o correto mesmo é vc corrigir a redundância no cadastro .... mas se não tiver jeito ... tenta colocar a descrição do produto primeiro e depois o código ...
Se estiver preenchendo o combo na mão ... define a ordem pela descrição crescente + o código
ORDER BY ProdDescricao, ProdCodigo
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
barbada
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
barbada
Crei esse codigo em algum modulo
Public Sub AutoProcura(cbo As ComboBox, KeyAscii As Integer)
Dim sBuffer As String
Dim lRetVal As Long
sBuffer = Left(cbo.Text, cbo.SelStart) & _
Chr(KeyAscii)
lRetVal = SendMessage((cbo.hwnd), CB_FINDSTRING, -1, ByVal sBuffer)
If lRetVal <> CB_ERR Then
cbo.ListIndex = lRetVal
cbo.Text = cbo.List(lRetVal)
cbo.SelStart = Len(sBuffer)
cbo.SelLength = Len(cbo.Text)
KeyAscii = 0
End If
No evendo do KeyPress do combo colo isso
AutoProcura CBO_Unidade, KeyAscii
Ficaria assim.
Private Sub CBO_unidade_KeyPress(KeyAscii As Integer)
AutoProcura CBO_Unidade, KeyAscii
End Sub
Para qualquer combo que tiver sempre no evento keypress chame ele do jeito acima.
Public Sub AutoProcura(cbo As ComboBox, KeyAscii As Integer)
Dim sBuffer As String
Dim lRetVal As Long
sBuffer = Left(cbo.Text, cbo.SelStart) & _
Chr(KeyAscii)
lRetVal = SendMessage((cbo.hwnd), CB_FINDSTRING, -1, ByVal sBuffer)
If lRetVal <> CB_ERR Then
cbo.ListIndex = lRetVal
cbo.Text = cbo.List(lRetVal)
cbo.SelStart = Len(sBuffer)
cbo.SelLength = Len(cbo.Text)
KeyAscii = 0
End If
No evendo do KeyPress do combo colo isso
AutoProcura CBO_Unidade, KeyAscii
Ficaria assim.
Private Sub CBO_unidade_KeyPress(KeyAscii As Integer)
AutoProcura CBO_Unidade, KeyAscii
End Sub
Para qualquer combo que tiver sempre no evento keypress chame ele do jeito acima.
O MEU CODIGO DE CIMA , EH NO EVENTO CHANGE MESMO.
Tópico encerrado , respostas não são mais permitidas