none
Access - Filtros sequenciais de formulário RRS feed

  • Pergunta

  • Olá,

    Desenvolvi um sistema para controle de plantas no Access e estou tendo problemas para aplicar vários filtros no formulário.

    Tenho a seguinte tela

    Quando passo o valor para todos os campos, o filtro funciona corretamente, porém quando deixo algum campo sem selecionar, o filtro da erro.

    tentei atribuir um valor para a variável quando o valor vindo da combo for igual a NULL, porém, não sei o porque, analisando pelo debug, não entra dentro da estrutura do IF para atribuir o * como valor.

    Alguém sabe como fazer este tipo de filtro no Access?

    Obrigado!

    quinta-feira, 27 de novembro de 2014 09:12

Respostas

  • Bom dia!

    Consegui resolver de uma forma bem lusitana, porém funcional.

    Disponibilizo o código como base de conhecimento para auxiliar quem tiver o mesmo problema.

    Private Sub btnfiltrar_Click()
    
    Dim planta, oprplanta, tamanho, oprtamanho, dap, oprdap, lote, oprlote As String
    
    planta = Me.CBOFILTROPLANTA.Column(0)
    tamanho = Me.cbofiltrotamanho.Column(0)
    dap = Me.cbofiltrodap.Column(0)
    lote = Me.cbofiltrolote.Column(0)
    
    If planta <> "Nulo" Then
        planta = Me.CBOFILTROPLANTA.Column(0)
        oprplanta = " = "
        Else
        planta = "> 0"
        oprplanta = ""
        End If
        
        
    If tamanho <> "Nulo" Then
        tamanho = Me.cbofiltrotamanho.Column(0)
        oprtamanho = " = "
        Else
        tamanho = "> 0"
        oprtamanho = ""
        End If
        
    If dap <> "Nulo" Then
        dap = Me.cbofiltrodap.Column(0)
        oprdap = " = "
        Else
        dap = "> 0"
        oprdap = ""
        End If
        
    If lote <> "Nulo" Then
        lote = Me.cbofiltrolote.Column(0)
        oprlote = " = "
        Else
        lote = "> 0"
        oprlote = ""
        End If
     
    DoCmd.ApplyFilter , "id_item" & oprplanta & " " & planta & " and ID_TAMANHO_PLANTA" & oprtamanho & " " & tamanho & " and id_dap " & oprdap & " " & dap & " and id_lote " & oprlote & " " & lote
    
    
    End Sub

    • Marcado como Resposta Davidson Araujo quarta-feira, 10 de dezembro de 2014 10:33
    quarta-feira, 10 de dezembro de 2014 10:32