MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

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


5 participantes

    [Resolvido]Filtro em Combobox

    avatar
    vailson
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 160
    Registrado : 08/05/2015

    [Resolvido]Filtro em Combobox Empty [Resolvido]Filtro em Combobox

    Mensagem  vailson 27/10/2016, 17:34

    Olá amigos,
    tenho uma consulta que retorna alguns resultados de nomes (35k). Essa lista de nomes vai para um combobox. Preciso que ao digitar alguma parte do texto de algum desses nomes ele filtre automaticamente eliminando os nomes que não são do meu interesse.
    Exemplo:

    Se eu digitar JOAO, ele deixará somente os JOAO na lista. Ou se eu digitar o OLIVEIRA, aparecerá apenas os nomes que tiverem oliveira.

    Como fazer? Obrigado!
    avatar
    Vittor_Duarte
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 24
    Registrado : 31/08/2016

    [Resolvido]Filtro em Combobox Empty Re: [Resolvido]Filtro em Combobox

    Mensagem  Vittor_Duarte 27/10/2016, 19:04

    Boa tarde Vailson!

    Para que isso aconteça, você precisa criar uma consulta, no qual essa consulta ficará vinculada a uma caixa de listagem.
    Após isso crie uma caixa de texto na qual vai ser digitada o nome, e coloca o nome da caixa de texto de "txtnome"

    Dentro da consulta, no campo que tiver os nomes digita isso nos critérios:
    Como [Forms]![Nomedoformulario]![txtnome] & "*"

    Depois disso, clique na caixa de texto que vai ser digitado o nome e vá em "eventos" e coloque o seguinte código no "ao alterar"
    Me.Recalc
    SendKeys "{f2}"

    Qualquer duvida, estou a disposição.
    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Filtro em Combobox Empty Filtro em Combobox

    Mensagem  CassioFabre 27/10/2016, 19:05

    Boa tarde,

    Marque a propriedade Limitar a uma lista da combo como NÃO e tente o seguinte, no evento Após Atualizar da sua combo:

    Código:
    Dim strsql As String
        
        If Not IsNull(suaCombo) = True Then
            strsql = "select seus_campos from suaConsulta where campoNome like '*" & suaCombo & "*'"
        Else
            strsql = "select seus_campos from suaConsulta"
        End If

       suaCombo.RowSource = strsql
       suaCombo.Requery

    Abraço.
    avatar
    vailson
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 160
    Registrado : 08/05/2015

    [Resolvido]Filtro em Combobox Empty Re: [Resolvido]Filtro em Combobox

    Mensagem  vailson 27/10/2016, 19:48

    Vittor_Duarte escreveu:
    A sua opção demanda que eu tenha um campo de texto e essas funções de teclado tem alguns bugs. Normalmente desliga o CapsLook, e, nesse caso específico não permite que eu busque o nome ANA, por exemplo.

    CassioFabre escreveu:
    Sua dica não funcionou. Mesmo assim obrigado.


    Abaixo um trecho do resultado da consulta:

    idpm
    CAIO CEZAR SANTOS ALVES - Mat. 5645298
    VICTOR FERNANDO ALVIM RESENDE - Mat. 5645303
    DARLAN CARNEIRO SANTANA - Mat. 5645329
    CARLOS ENRIQUE CARNEIRO DA SILVA - Mat. 5645345
    ANA FERREIRA NASCIMENTO - Mat. 5645353

    Tenho uma combobox que lista esse resultado. Ocorre que se eu digitar na combobox CAR, vai ficar apenas o registro do CARLOS ENRIQUE CARNEIRO DA SILVA - Mat. 5645345 na tela para eu selecionar. Isso já é o padrão da combobox. Mas preciso que, se eu digitar VIM, ele liste VICTOR FERNANDO ALVIM RESENDE - Mat. 5645303, ou se eu digitar a Matrícula, ou parte dela, liste apenas os nomes correspondentes.

    Obrigado pela atenção de todos!
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5120
    Registrado : 20/04/2011

    [Resolvido]Filtro em Combobox Empty Re: [Resolvido]Filtro em Combobox

    Mensagem  Silvio 27/10/2016, 20:23

    Para evitar especulações...adivinhações..ou mesmo usar a bola de cristal ( Microsoft Crystal Ball ), solicitamos que seja enviada as partes envolvidas na duvida em questão ( tabelas, formulários, consultas).

    Fazendo dessa forma, fica muito...muito...muito mais simples a ajuda.

    Agradecemos.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Filtro em Combobox Empty Filtro em Combobox

    Mensagem  CassioFabre 28/10/2016, 10:19

    Bom dia,

    A solução postada por mim funciona. Segue em anexo um exemplo que montei aqui de forma bem simples. Adapte ao seu projeto.

    Código que utilizei no evento Após Atualizar da combo:

    Código:
    Dim strSql As String
        
        If IsNumeric(cbxNome) = True Then
            If Not IsNull(cbxNome) = True Then
                strSql = "select * from tblNome where matricula like '*" & cbxNome & "*'"
            Else
                strSql = "Select * from tblNome"
            End If
        Else
            If Not IsNull(cbxNome) = True Then
                strSql = "select * from tblNome where nome like '*" & cbxNome & "*'"
            Else
                strSql = "Select * from tblNome"
            End If
        End If
        
        cbxNome.RowSource = strSql
        cbxNome.Requery
        cbxNome.Dropdown

    Faça o teste digitando parte do nome e depois digitando parte da matrícula.

    Abraço.
    Anexos
    [Resolvido]Filtro em Combobox Attachmentcombo.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (39 Kb) Baixado 173 vez(es)
    avatar
    vailson
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 160
    Registrado : 08/05/2015

    [Resolvido]Filtro em Combobox Empty Re: [Resolvido]Filtro em Combobox

    Mensagem  vailson 28/10/2016, 13:35

    Bom dia, A solução postada por mim funciona. Segue em anexo um exemplo que montei aqui de forma bem simples. Adapte ao seu projeto. Código que utilizei no evento Após Atualizar da combo: CÓDIGO: Dim strSql As String If IsNumeric(cbxNome) = True Then If Not IsNull(cbxNome) = True Then strSql = "select * from tblNome where matricula like '*" & cbxNome & "*'" Else strSql = "Select * from tblNome" End If Else If Not IsNull(cbxNome) = True Then strSql = "select * from tblNome where nome like '*" & cbxNome & "*'" Else strSql = "Select * from tblNome" End If End If cbxNome.RowSource = strSql cbxNome.Requery cbxNome.Dropdown Faça o teste digitando parte do nome e depois digitando parte da matrícula. Abraço. escreveu:

    Bom dia, o seu exemplo não funcionou, inclusive o do seu arquivo em enexo.
    Mesmo assim obrigado!
    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Filtro em Combobox Empty Filtro em Combobox

    Mensagem  CassioFabre 28/10/2016, 13:47

    Bom dia,

    Bom, aqui está funcionando conforme os prints abaixo.

    [Resolvido]Filtro em Combobox 28m2p6s
    Padrão conforme exemplo que você passou.

    --------------
    [Resolvido]Filtro em Combobox 347uz6b
    Pesquisando com o trecho "ana" e retornando os nomes cadastrados que contenham este trecho.

    --------------
    [Resolvido]Filtro em Combobox 5po0w0
    Pesquisando pelo numero de matricula e não exibindo os que não o contém.

    A não ser que não seja esse seu objetivo, está funcionando corretamente.

    Abraço.
    avatar
    vailson
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 160
    Registrado : 08/05/2015

    [Resolvido]Filtro em Combobox Empty Re: [Resolvido]Filtro em Combobox

    Mensagem  vailson 28/10/2016, 14:09

    Então, por incrível que pareça não funciona aqui. Mas de toda sorte, estou enviando o modelo. Lembrando que no seu exemplo, utiliza a tabela como fonte dos dados. Precisa ser através de uma consulta.
    Agradeço a atenção.
    Anexos
    [Resolvido]Filtro em Combobox Attachmentexemplo.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (30 Kb) Baixado 45 vez(es)
    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Filtro em Combobox Empty Filtro em Combobox

    Mensagem  CassioFabre 28/10/2016, 15:51

    Boa tarde,

    Realmente o código funciona sim. Segue o que fiz e em anexo o seu exemplo funcionando.

    Retirei da comb_efet a propriedade Origem da Linha. No evento Ao Abrir do formulário, inseri o seguinte código:

    Código:
    Me.comb_efet.RowSource = "select idpm from cons_nomepm"
    comb_efet.Requery

    No evento Após Atualizar da comb_efet só retirei a função que filtra a consulta, isso não é necessário. Então ficou da seguinte forma:

    Código:
       Dim strsql As String
        
        If Not IsNull(comb_efet) = True Then
            strsql = "select idpm from cons_nomepm where idpm like '*" & comb_efet & "*'"
            
            comb_efet.RowSource = strsql
            comb_efet.Requery
            comb_efet.Dropdown
        Else
            comb_efet.RowSource = "select idpm from cons_nomepm"
            comb_efet.Requery
        End If

    E ai é só testar.

    Abraço.
    Anexos
    [Resolvido]Filtro em Combobox Attachmentexemplo.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (86 Kb) Baixado 110 vez(es)
    avatar
    vailson
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 160
    Registrado : 08/05/2015

    [Resolvido]Filtro em Combobox Empty Re: [Resolvido]Filtro em Combobox

    Mensagem  vailson 30/10/2016, 22:10

    Cassio Fabre, o exemplo tá funcionando. Ocorre que só filtra após clicar enter ou tab. É possível o filtro ficar igual ao formato original, destacando um nome durante a digitação?
    Obrigado
    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Filtro em Combobox Empty Filtro em Combobox

    Mensagem  CassioFabre 31/10/2016, 12:50

    Bom dia,

    Neste caso seria melhor você usar o controle ListBox com um campo de text como filtro atualizando a ListBox no evento Ao Alterar da campo de texto.

    Abraço.
    Celso Roberto
    Celso Roberto
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Filtro em Combobox Empty Re: [Resolvido]Filtro em Combobox

    Mensagem  Celso Roberto 1/11/2016, 02:14

    Boas...

    Com a licença do amigo CassioFabre

    O código do cassio esta no evento após atualizar, para que se filtre ao digitar teria que estar no evento ao alterar.
    Teste este código abaixo no evento ao alterar

    Código:
    Private Sub comb_efet_Change()
    Me.comb_efet.RowSourceType = "Table/Query"
    Me.comb_efet.RowSource = "SELECT idpm FROM cons_nomepm WHERE idpm LIKE '*" &    Me.comb_efet.Text & "*'"
    Me.comb_efet.Dropdown
    End Sub
     

    Vailson, quando efetuamos filtragem ao digitar por vezes se perde a possibilidade de selecionar com as setas para cima e para baixo, só possibilita selecionar com o mouse.
    Então use este código abaixo no evento ao apertar a tecla para te possibilitar quando filtrar e quiser correr a lista com a seta para cima e para baixo.

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


    Espero que ajude

    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.....
    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Filtro em Combobox Empty Filtro em Combobox

    Mensagem  CassioFabre 1/11/2016, 09:30

    Bom dia,

    Perfeito Celso. Eu coloquei aqui também no evento Ao Alterar, mas por algum motivo estava recebendo um erro. Algo como "é necessário atualizar o campo antes de refazer a consulta", ou algo assim. Não faço ideia do porquê. Acredito que talvez não fosse necessário utilizar o .Requery na combo. De qualquer maneira, está funcionando perfeitamente, acredito que exatamente como o autor do tópico necessita.

    Abraço.
    avatar
    vailson
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 160
    Registrado : 08/05/2015

    [Resolvido]Filtro em Combobox Empty Re: [Resolvido]Filtro em Combobox

    Mensagem  vailson 1/11/2016, 15:50

    Solução perfeita. Obrigado!

    Essa poderia ir para o repositório.
    Celso Roberto
    Celso Roberto
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Filtro em Combobox Empty Re: [Resolvido]Filtro em Combobox

    Mensagem  Celso Roberto 1/11/2016, 19:51

    Olá...

    Que bom que tenha dado certo e obrigado pela sugestão, vou disponibilizar sim
    O Fórum agradece seu retorno.

    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.....

    Conteúdo patrocinado


    [Resolvido]Filtro em Combobox Empty Re: [Resolvido]Filtro em Combobox

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/11/2024, 00:54