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


    Filtrar consulta usando mais de uma opção selecionada em formulário

    avatar
    silvasantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 51
    Registrado : 29/01/2012

    Filtrar consulta usando mais de uma opção selecionada em formulário Empty Filtrar consulta usando mais de uma opção selecionada em formulário

    Mensagem  silvasantos 27/1/2014, 12:07

    Olá a todos, venho novamente pedir a ajuda de vocês.
    Tenho uma consulta (cons_01) baseados em uma tabela (tbl_teste) com os campos id e referencia e um formulário (frm_teste) onde filtro a consulta usando 03 checkbox (opc_01=1, opc_02=2 e opc_03=3) que armazena os valores em um campo texto txt_filtra.
    Gostaria de filtrar o campo referencia da consulta de acordo as opções selecionadas nos check boxes, sendo que as vezes é selecionado mais de uma opção e armazenado no txt_filtra, ex 1,2 ou 1,3 ou 2,3 ou 1,2,3.
    Se alguém puder me ajudar desde já eu agradeço.

    Tentei assim e funciona apenas quando tem apenas uma opção selecionada:

    Como SeImed(ÉNulo([Forms]![frm_teste]![txt_filtra]);"*";[Forms]![frm_teste]![txt_filtra]) & "*"

    Preciso que retorne os resultados quando for selecionado mais de uma opção.
    avatar
    Convidado
    Convidado


    Filtrar consulta usando mais de uma opção selecionada em formulário Empty Re: Filtrar consulta usando mais de uma opção selecionada em formulário

    Mensagem  Convidado 27/1/2014, 20:52

    De uma observada neste código, ele utiliza o operador in...

    Basicamente reúne em uma string as informações concatenadas e após utiliza-se a mesma em uma cláusula in na SQL
    O Código está explicado, observe que a variável é a strID, este código está adaptado a funcionar em uma listBox de Seleção múltipla, veja que o valor concatenado na mesma é a coluna 0 da lista portanto a variável irá assumindo o calor da ID concatenado com uma vírgula, ex:
    StrID = "1,2,3,6,7"


    '------------------------------------------------------
    'Referencio as variáveis com o formulário e com a lista
    '------------------------------------------------------
    Set frm = Forms!frmCnsBoleto
    Set ctl = frm!lstBoletos
    '----------------
    'Limpo a variável
    '----------------
    StrID = ""
    '--------------------------------------------------
    'Executo loop pela listBox (quantidade de registros)
    '--------------------------------------------------
    For lngContador = 0 To ctl.ListCount - 1
        '------------------------------------------------------------------
        'Se o registro estiver selecionado carrega a sua Id para a variável
        'concatenando com valor preexiste na mesma
        '------------------------------------------------------------------
        If ctl.Selected(lngContador) Then
            StrID = StrID & "," & ctl.Column(0, lngContador)
        End If
    Next
    '-----------------------
    'Retire a última vírgula
    '-----------------------
    StrID = Mid(StrID, 2)
    '-------------------------------------------------
    'Caso não fora selecionado registro emite mensagem
    '-------------------------------------------------
    If ctl.ItemsSelected.Count = 0 Then
        MsgBox "Selecione as Boletos", vbCritical, "ATENÇÃO"
        Exit Sub
    End If



    Após a variável estar devidamente carregada utiliza-se a mesma na sql com o operador IN, assim sua consulta estará filtrada pelo contido na variável:

    StrSQL = "SELECT * FROM SuaTabela WHERE CampoCodigo  In (" & StrID & ")"


    Cumprimentos.
    É por ai.

      Data/hora atual: 27/4/2024, 17:57