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


2 participantes

    [Resolvido]Filtro em Combobox - Se selecionado, filtrar, se vazio, não filtrar (mostrar tudo)

    avatar
    miguel.serra
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 50
    Registrado : 20/01/2011

    [Resolvido]Filtro em Combobox - Se selecionado, filtrar, se vazio, não filtrar (mostrar tudo) Empty [Resolvido]Filtro em Combobox - Se selecionado, filtrar, se vazio, não filtrar (mostrar tudo)

    Mensagem  miguel.serra 4/10/2017, 02:54

    Caros amigos, tenho uma série de combobox onde uma é indiretamente relacionada a outra. Se seleciono um Cliente numa, a combobox de imóveis só irá exibir como opção os imóveis deste cliente, e a combobox de Municípios só exibirá cidades onde há imóveis daquele cliente.

    Se seleciono um município, a combobox de imóveis só mostrará imóveis daquele município.

    Para funcionar, nas consultas de cada combobox, utilizo o critério Como "*" & [Formulários]![0_CADASTRO - GERAL]![CADASTRO-CONTROLE].[Form]![FiltroMunicípio] & "*"

    Mas isto carrega sobremaneira as consultas de cada combobox, que demora uns 15 segundos só para abrir na primeira consulta de cada. Um horror

    Se removo o critério, o retorno da consulta vem num piscar de olhos. Se coloco um critério objetivo (exemplo: "RIO DE JANEIRO" no campo município), também é super rápido.

    Para sanar eu gostaria de um critério que, se uma combobox está com conteúdo, as outra são filtradas quando abertas. Se não, remove-se o filtro

    Tentei os seguintes critérios:

    SeImed([Formulários]![0_CADASTRO - GERAL]![CADASTRO-CONTROLE].[Form]![FiltroMunicípio] & ""<>"";[Formulários]![0_CADASTRO - GERAL]![CADASTRO-CONTROLE].[Form]![FiltroMunicípio]; Como "*")
    ou

    SeImed([Formulários]![0_CADASTRO - GERAL]![CADASTRO-CONTROLE].[Form]![FiltroMunicípio] & ""<>"";[Formulários]![0_CADASTRO - GERAL]![CADASTRO-CONTROLE].[Form]![FiltroMunicípio]; "*")
    ou

    SeImed([Formulários]![0_CADASTRO - GERAL]![CADASTRO-CONTROLE].[Form]![FiltroMunicípio] & ""<>"";[Formulários]![0_CADASTRO - GERAL]![CADASTRO-CONTROLE].[Form]![FiltroMunicípio]; )

    Mas não funcionam de jeito nenhum quando a combobox está vazia. Por exemplo, se a combobox Município estiver vazia, a combobox de imóveis retorna vazia. Mas se seleciono um município, ok, a de imóveis apresenta os registros daquela cidade

    Alguém teria uma solução?

    Muito obrigado!
    Abs
    Miguel Serra
    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 - Se selecionado, filtrar, se vazio, não filtrar (mostrar tudo) Empty Re: [Resolvido]Filtro em Combobox - Se selecionado, filtrar, se vazio, não filtrar (mostrar tudo)

    Mensagem  CassioFabre 4/10/2017, 14:56

    Bom dia,

    Vou citar aqui como Combo1 e Combo2 (voce relaciona aí qual é a primeira combo da sua cadeia e qual a segunda, depois é só extrapolar a lógica pro restante).

    No evento após atualizar da Combo1 coloque o seguinte:
    Código:
    Dim str As String

    str = "SELECT * FROM [tabela que popula a combo2]"

    If Not IsNull(Combo1) = True Then
        str = str & " WHERE [campo criterio da tabela que popula a combo2] = '" & cbxCombo1 & "'" 'Estou supondo aqui que é critério é do tipo texto
    End if

    combo2.RowSource = str
    Combo2.ColumnCount = x 'quantidade de colunas da tabela que popula a combo2

    Abraço.
    avatar
    miguel.serra
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 50
    Registrado : 20/01/2011

    [Resolvido]Filtro em Combobox - Se selecionado, filtrar, se vazio, não filtrar (mostrar tudo) Empty Re: [Resolvido]Filtro em Combobox - Se selecionado, filtrar, se vazio, não filtrar (mostrar tudo)

    Mensagem  miguel.serra 5/10/2017, 00:07

    Excelente, Cassio!!!  Very Happy  Very Happy  Very Happy
    Segui nesta linha. Como eram múltiplas combobox, precisei fazer uns ajustes e, na minha miopia (deve ser um código terrível na visão de um programador de verdade!), fiz da seguinte maneira, mas atendeu:
    Código:

    Dim strFiltraMun As String 'Com isto, podemos "montar" uma codificação, baseada em quais combobox foram utilizadas, e o script irá selecionar a consulta adequada

    Dim strCLI As String
    Dim strMun As String
    Dim strProj As String
    Dim strGrupo As String



    ' checa se há clientes selecionados
    If Me.FiltroCliente & "" = "" Then
    strCLI = "0"
    Else
    strCLI = "C"
    End If

    strFiltro = strCLI

    ' checa se há municípios selecionados
    If Me.FiltroMunicípio & "" = "" Then
    strMun = "0"
    Else
    strMun = "M"
    End If

    strFiltro = strFiltro & strMun

    ' checa se há projetos selecionados
    If Me.FiltroProjeto & "" = "" Then
    strProj = "0"
    Else
    strProj = "P"
    End If

    strFiltro = strFiltro & strProj

    ' checa se há grupos selecionados
    If Me.FiltroGrupo & "" = "" Then
    strGrupo = "0"
    Else
    strGrupo = "G"
    End If

    strFiltro = strFiltro & strGrupo

    ' checa se o filtro existente é compatível ou se será necessário alterar a consulta
    If Me.FiltroUnidade.Tag = strFiltro Then
    Exit Sub
    End If

    ' define a parte inicial comum a todas as opções de consulta (apenas para economizar epaço)
    strFiltraMun = "SELECT ... FROM ..."

    ' Define a Tag da combobox com o nome do filtro a ser utilizado
    Me.FiltroUnidade.Tag = strFiltro

    ' Aplica o filtro correto, de acordo com as combobox selecionadas
    Select Case strFiltro

    Case "0000"
    strFiltraMun = strFiltraMun & " GROUP BY ...;"

    Case "00P0"
    strFiltraMun = strFiltraMun & " WHERE ...;"

    Case "000G"
    strFiltraMun = strFiltraMun & " WHERE ...;"

    Case "00PG"
    strFiltraMun = strFiltraMun & " WHERE ...;"

    Case "0M00"
    strFiltraMun = strFiltraMun & " GROUP BY ...;"

    Case "0M0G"
    strFiltraMun = strFiltraMun & " WHERE ...;"

    Case "0MPG"
    strFiltraMun = strFiltraMun & " WHERE ...;"

    Case "C000"
    strFiltraMun = strFiltraMun & " GROUP BY ...;"

    Case "C0P0"
    strFiltraMun = strFiltraMun & " WHERE ...;"

    Case "C00G"
    strFiltraMun = strFiltraMun & " WHERE ...;"

    Case "C0PG"
    strFiltraMun = strFiltraMun & " WHERE ...;"

    Case "CM00"
    strFiltraMun = strFiltraMun & " GROUP BY ...;"

    Case "CMP0"
    strFiltraMun = strFiltraMun & " WHERE ...;"

    Case "CM0G"
    strFiltraMun = strFiltraMun & " WHERE ...;"

    Case "CMPG"
    strFiltraMun = strFiltraMun & " WHERE ...;"

    End Select

     Me.FiltroUnidade.RowSource = strFiltraMun

    Obrigado novamente! Abs
    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 - Se selecionado, filtrar, se vazio, não filtrar (mostrar tudo) Empty Re: [Resolvido]Filtro em Combobox - Se selecionado, filtrar, se vazio, não filtrar (mostrar tudo)

    Mensagem  CassioFabre 5/10/2017, 11:24

    Bom dia,

    Muito bom! Pra mim código ruim é aquele que não funciona hehe

    Agradecemos o retorno.

    Abraço.


    .................................................................................
    Só não tem código pra morte!

    Conteúdo patrocinado


    [Resolvido]Filtro em Combobox - Se selecionado, filtrar, se vazio, não filtrar (mostrar tudo) Empty Re: [Resolvido]Filtro em Combobox - Se selecionado, filtrar, se vazio, não filtrar (mostrar tudo)

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/3/2024, 20:42