Ir para conteúdo
Fórum Script Brasil
  • 0

Autocompletar e Filtrar BD no combobox


Rodrigo Delalana

Pergunta

Amigos, seguinte:

Já tenho a rotina que carrega o BD no combobox e autocompleta o combobox, porém minha rotina não filtra os dados que aparecem no combobox quando digito, tipo clico abre todos os itens do BD e na hora que começo a digitar ele não vai filtrando o BD.

segue abaixo os codigos que uso:

Autocompletar:

Option Explicit
Private Const CB_FINDSTRING As Long = &H14C
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
Public Function Combo_AutoCompletar(xCombo As ComboBox, ByVal xKeyAscii As Long, Optional ByVal xUpperCase As Boolean = True) As Long
    Dim lngFind As Long, intPos As Long, intLength As Long, tStr As String
    With xCombo
        If xKeyAscii = 8 Then
            If .SelStart = 0 Then Exit Function
            
            .SelStart = .SelStart - 1
            .SelLength = Len(.Text)
            .SelText = vbNullString
        Else
            intPos = .SelStart
            tStr = .Text
            .SelText = (Chr$(xKeyAscii))
'            .SelText = IIf(xUpperCase, _
'                           UCase$(Chr$(xKeyAscii)), _
'                           LCase$(Chr$(xKeyAscii)))
        End If
        lngFind = SendMessage(.hwnd, CB_FINDSTRING, 0, ByVal .Text)
        If lngFind = -1 Then
            .Text = tStr
            .SelStart = intPos
            .SelLength = (Len(.Text) - intPos)
            Combo_AutoCompletar = xKeyAscii
        Else
            intPos = .SelStart
            intLength = Len(.List(lngFind)) - Len(.Text)
            .SelText = .SelText & Right$(.List(lngFind), intLength)
            .SelStart = intPos
            .SelLength = intLength
        End If
    End With
End Function
<<<<<>>>>>>
Private Sub cmbcor_KeyPress(KeyAscii As Integer)
KeyAscii = Combo_AutoCompletar(cmbcor, KeyAscii)
End Sub
<<<<>>>>>> CARREGA O BANCO DE DADOS NO COMBOBOX:
Private Sub Form_Load()

    Set DB2 = OpenDatabase(App.Path & "\banco_produtos.mdb")
     Set CARGO = DB2.OpenRecordset("SELECT * FROM tabcor where cor")
'Enquanto não for o fim de arquivo adiciona o campo funcao ao combobox
     While Not CARGO.EOF
         cmbcor.AddItem CARGO!cor
        CARGO.MoveNext
    Wend
End Sub

<<<<<<>>>>>>>>

ESPERO QUE POSSAM ME AJUDAR...

VLW

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

rodrigo, esse codigo q você ta usando não serve pra filtrar, o q ele faz é simplesmente autocompletar o texto enquanto você digita.

exemplo, se tem um item chamado kuroi, você digita o k e ele já mostra o resto da palavra, não é nem pra clicar no combo.

se nem isso estiver funcionando, acho q faltou setar a propriedade KeyPreview do form = True.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...