MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Melhoria de modulo vba Filtrar Ao Digitar do usuário zcarloslopes

    alozs
    alozs
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 284
    Registrado : 07/02/2018

    [Resolvido]Melhoria de modulo vba Filtrar Ao Digitar do usuário zcarloslopes Empty [Resolvido]Melhoria de modulo vba Filtrar Ao Digitar do usuário zcarloslopes

    Mensagem  alozs em 13/9/2019, 15:11

    Olá a todos, peguei o exemplo do usuário zcarloslopes de um módulo vba que ele desenvolveu e estou repassando aqui para contar com a ajuda dos mais experientes para a melhoria desse modulo que acredito que servirá de grande valia para todos, ele faz a pesquisa em uma tabela a partir de uma combobox filtrando várias colunas conforme exemplo em anexo, porem me deparei com algumas dificuldades que não consegui resolver como por exemplo ao apertar a tecla para "baixo" ele não seleciona o registro, tem que pressionar espaço para buscar a segunda coluna e etc, espero que com a ajuda de todos podemos melhorar ainda mais esse módulo, agradeço ao usuário zcarloslopes por ter postado no repositório.
    Anexos
    [Resolvido]Melhoria de modulo vba Filtrar Ao Digitar do usuário zcarloslopes AttachmentFiltrarAoDigitar.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (26 Kb) Baixado 18 vez(es)


    Última edição por alozs em 14/9/2019, 22:26, editado 1 vez(es)
    Celso Roberto
    Celso Roberto
    VIP
    VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1071
    Registrado : 01/03/2014

    [Resolvido]Melhoria de modulo vba Filtrar Ao Digitar do usuário zcarloslopes Empty Re: [Resolvido]Melhoria de modulo vba Filtrar Ao Digitar do usuário zcarloslopes

    Mensagem  Celso Roberto em 13/9/2019, 18:05

    Olá..

    Para resolver a parte de oa apertar a tecla para baixo ou para cima use este código abaixo no evento ao aperar a tecla da combobox

    Código:
    Private Sub cboAutoFilter_KeyDown(KeyCode As Integer, Shift As Integer)
             
        Me.cboAutoFilter.Dropdown
        Select Case KeyCode
            Case vbKeyDown
                Me.cboAutoFilter = Me.cboAutoFilter.ItemData(Me.cboAutoFilter.ListIndex + 1)
                KeyCode = 0
            Case vbKeyUp
                Me.cboAutoFilter = Me.cboAutoFilter.ItemData(Me.cboAutoFilter.ListIndex - 1)
                KeyCode = 0
            Case Else
        End Select
    End Sub

    Nota: Não deixar o mouse apontando para a lista da combobox

    Aguardo

    Abraços


    .................................................................................


    Você fica satisfeito ao ter sua dúvida solucionada?.
    Quem te ajuda também fica quando você da o tópico por "Resolvido".
    Veja como neste Link: https://www.maximoaccess.com/t860-resolucao-de-topicos



    A Única coisa que sei é que ainda nada sei, Mas em breve Saberei.....
    alozs
    alozs
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 284
    Registrado : 07/02/2018

    [Resolvido]Melhoria de modulo vba Filtrar Ao Digitar do usuário zcarloslopes Empty Re: [Resolvido]Melhoria de modulo vba Filtrar Ao Digitar do usuário zcarloslopes

    Mensagem  alozs em 13/9/2019, 23:25

    Celso Roberto deu certo!!!!!!!!!!!  cheers cheers agora falta só a parte de pesquisar na 2º coluna, nesse caso profissão!  sem precisar dar o espaço!
    Celso Roberto
    Celso Roberto
    VIP
    VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1071
    Registrado : 01/03/2014

    [Resolvido]Melhoria de modulo vba Filtrar Ao Digitar do usuário zcarloslopes Empty Re: [Resolvido]Melhoria de modulo vba Filtrar Ao Digitar do usuário zcarloslopes

    Mensagem  Celso Roberto em 14/9/2019, 01:38

    Olá..

    eu não vi ainda como esta o código, amanha eu vou dar uma passada para entender e dar sugestão.

    Aguarde

    Abraços


    .................................................................................


    Você fica satisfeito ao ter sua dúvida solucionada?.
    Quem te ajuda também fica quando você da o tópico por "Resolvido".
    Veja como neste Link: https://www.maximoaccess.com/t860-resolucao-de-topicos



    A Única coisa que sei é que ainda nada sei, Mas em breve Saberei.....
    alozs
    alozs
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 284
    Registrado : 07/02/2018

    [Resolvido]Melhoria de modulo vba Filtrar Ao Digitar do usuário zcarloslopes Empty Re: [Resolvido]Melhoria de modulo vba Filtrar Ao Digitar do usuário zcarloslopes

    Mensagem  alozs em 14/9/2019, 13:13

    beleza Celso Roberto, você vai gostar, e supre uma falta de pesquisa nativa do access via combobox, eu estou fazendo alguns ajustes aqui também para ver se resolve
    Celso Roberto
    Celso Roberto
    VIP
    VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1071
    Registrado : 01/03/2014

    [Resolvido]Melhoria de modulo vba Filtrar Ao Digitar do usuário zcarloslopes Empty Re: [Resolvido]Melhoria de modulo vba Filtrar Ao Digitar do usuário zcarloslopes

    Mensagem  Celso Roberto em 14/9/2019, 20:59

    Olá...

    Segue uma sugestão, altere para este.

    Código:
    Private Sub cboAutoFilter_Change()
    On Error Resume Next

    'NOTA: Alterar a propriedade AutoExpand da ComboBox para No

    Dim strSQL As String

    Dim sWords() As String

    Dim NumEspaços As String

    sWords() = Split(Me.cboAutoFilter.Text, " ")

    NumEspaços = StringCountOccurrences(Me.cboAutoFilter.Text, " ") 'Contar número de Espaços na string

    If Len(Me.cboAutoFilter.Text) > 0 Then

        If NumEspaços = 1 Then 'No caso de 2 palavras
       
                strSQL = "SELECT Tabela1.NomeCompleto, Tabela1.Profissao " & _
                        "FROM Tabela1 " & _
                        "WHERE (((Tabela1.NomeCompleto) & (Tabela1.Profissao) Like '*" & sWords(0) & "*" & sWords(1) & "*')) " & _
                        "OR (((Tabela1.NomeCompleto) & (Tabela1.Profissao) Like '*" & sWords(1) & "*" & sWords(0) & "*')) " & _
                        "ORDER BY [NomeCompleto];"
                       
        ElseIf NumEspaços = 2 Then 'No caso de 3 palavras
       
                strSQL = "SELECT Tabela1.NomeCompleto, Tabela1.Profissao " & _
                        "FROM Tabela1 " & _
                        "WHERE (((Tabela1.NomeCompleto) & (Tabela1.Profissao) Like '*" & sWords(0) & "*" & sWords(1) & "*" & sWords(2) & "*')) " & _
                        "OR (((Tabela1.NomeCompleto) & (Tabela1.Profissao) Like '*" & sWords(0) & "*" & sWords(2) & "*" & sWords(1) & "*')) " & _
                        "OR (((Tabela1.NomeCompleto) & (Tabela1.Profissao) Like '*" & sWords(1) & "*" & sWords(0) & "*" & sWords(2) & "*')) " & _
                        "OR (((Tabela1.NomeCompleto) & (Tabela1.Profissao) Like '*" & sWords(1) & "*" & sWords(2) & "*" & sWords(0) & "*')) " & _
                        "OR (((Tabela1.NomeCompleto) & (Tabela1.Profissao) Like '*" & sWords(2) & "*" & sWords(0) & "*" & sWords(1) & "*')) " & _
                        "OR (((Tabela1.NomeCompleto) & (Tabela1.Profissao)Like '*" & sWords(2) & "*" & sWords(1) & "*" & sWords(0) & "*')) " & _
                        "ORDER BY [NomeCompleto];"
       
        Else
       
                strSQL = "SELECT Tabela1.NomeCompleto, Tabela1.Profissao " & _
                        "FROM Tabela1 " & _
                        "WHERE (((Tabela1.NomeCompleto) & (Tabela1.Profissao) Like '*" & sWords(0) & "*')) " & _
                        "ORDER BY [NomeCompleto];"
        End If
       
    Else

        strSQL = "SELECT Tabela1.NomeCompleto, Tabela1.Profissao " & _
                "FROM Tabela1 " & _
                "ORDER BY [NomeCompleto];"
    End If

    Me.cboAutoFilter.RowSource = strSQL
    Me.cboAutoFilter.Dropdown

    End Sub

    Faça alguns testes como:

    - Filtre só pro nomes
    - Filtre só por profissão
    - Digite parte de um nome que tenha varias profissão, de um espaço e digite parte da profissão.
    - Digite parte de uma profissão com vários Nomes, de um espaço e digite parte do nome, etc...

    Faça testes e retorne

    Nota: O código que te passei na mensagem anterior é só para habilitar o uso das teclas para cima e para baixo dentro da lista da combobox.

    Abraços


    .................................................................................


    Você fica satisfeito ao ter sua dúvida solucionada?.
    Quem te ajuda também fica quando você da o tópico por "Resolvido".
    Veja como neste Link: https://www.maximoaccess.com/t860-resolucao-de-topicos



    A Única coisa que sei é que ainda nada sei, Mas em breve Saberei.....
    Celso Roberto
    Celso Roberto
    VIP
    VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1071
    Registrado : 01/03/2014

    [Resolvido]Melhoria de modulo vba Filtrar Ao Digitar do usuário zcarloslopes Empty Re: [Resolvido]Melhoria de modulo vba Filtrar Ao Digitar do usuário zcarloslopes

    Mensagem  Celso Roberto em 14/9/2019, 21:15

    Olá...

    Importante!!!

    Quando der por finalizado e pretender colocar no repositório, não deixe de manter os créditos do autor zcarloslopes e acrescente os seus.

    Abraços



    .................................................................................


    Você fica satisfeito ao ter sua dúvida solucionada?.
    Quem te ajuda também fica quando você da o tópico por "Resolvido".
    Veja como neste Link: https://www.maximoaccess.com/t860-resolucao-de-topicos



    A Única coisa que sei é que ainda nada sei, Mas em breve Saberei.....
    alozs
    alozs
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 284
    Registrado : 07/02/2018

    [Resolvido]Melhoria de modulo vba Filtrar Ao Digitar do usuário zcarloslopes Empty Re: [Resolvido]Melhoria de modulo vba Filtrar Ao Digitar do usuário zcarloslopes

    Mensagem  alozs em 14/9/2019, 22:25

    Celso Roberto ficou bala!!!! vou repostar no repositório no mesmo tópico do autor do modulo, acredito que vai ajudar muita gente!  cheers cheers cheers
    Anexos
    [Resolvido]Melhoria de modulo vba Filtrar Ao Digitar do usuário zcarloslopes AttachmentFiltrarAoDigitarAtualizado.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (32 Kb) Baixado 14 vez(es)
    Celso Roberto
    Celso Roberto
    VIP
    VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1071
    Registrado : 01/03/2014

    [Resolvido]Melhoria de modulo vba Filtrar Ao Digitar do usuário zcarloslopes Empty Re: [Resolvido]Melhoria de modulo vba Filtrar Ao Digitar do usuário zcarloslopes

    Mensagem  Celso Roberto em 14/9/2019, 22:32

    Olá...

    Toda melhoria sempre ajuda.

    Fico feliz em ter ajudado

    Abraços e sucesso


    .................................................................................


    Você fica satisfeito ao ter sua dúvida solucionada?.
    Quem te ajuda também fica quando você da o tópico por "Resolvido".
    Veja como neste Link: https://www.maximoaccess.com/t860-resolucao-de-topicos



    A Única coisa que sei é que ainda nada sei, Mas em breve Saberei.....

      Data/hora atual: 24/11/2020, 10:02