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


    Filtros Sequenciais

    avatar
    Gilnei
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 26/10/2012

    Filtros Sequenciais Empty Filtros Sequenciais

    Mensagem  Gilnei 3/5/2013, 14:24

    Ola a todos!

    Preciso de uma ajuda.

    Estou utilizando um código do Mestre Avelino para filtros sequenciais, o problema ocorre devido ao grande número de combobox (11 no total), no caso do meu projeto enumeriei as combos de F1 até F11, os filtros até a F9 funcionam, mas quando chega na F10 e na F11 não.

    Segue o Código e anexo o exemplo.

    Recorro aos Mestres deste fórum por um pedido de ajuda!

    ------------------------------------------------------------

    Public Function fncFiltrar(NomeCampoFoco As String)
    Dim x As String, filtro As String, strSplit As String
    Dim f(12) As String, cp(12) As Variant
    Dim k As Variant, p As Double
    Dim booFiltro As Boolean, booPos As Boolean

    x = Me(NomeCampoFoco).Text: p = 0
    For p = 0 To 10
    cp(p) = IIf(InStr(NomeCampoFoco, "F" & p + 1) > 0, x, Me("F" & p + 1))
    Next

    f(0) = "Código Like '*" & cp(0) & "'"
    f(1) = IIf(cp(1) = Chr(32), "Relator is null", "Relator Like '*" & cp(1) & "'")
    f(2) = IIf(cp(2) = Chr(32), "Nome is null", "Nome Like '*" & cp(2) & "*'")
    f(3) = IIf(cp(3) = Chr(32), "Right([Previsto],4) is null", "Right([Previsto],4) Like '*" & cp(3) & "'")
    f(4) = IIf(cp(4) = Chr(32), "Right(Left([Previsto],5),2) is null", "Right(Left([Previsto],5),2) Like '*" & cp(4) & "'")
    f(5) = IIf(cp(5) = Chr(32), "Left([Previsto],2) is null", "Left([Previsto],2) Like '*" & cp(5) & "'")
    f(6) = IIf(cp(6) = Chr(32), "Nível_01 is null", "Nível_01 Like '*" & cp(6) & "*'")
    f(7) = IIf(cp(7) = Chr(32), "Nível_02 is null", "Nível_02 Like '*" & cp(7) & "*'")
    f(8 ) = IIf(cp(8 ) = Chr(32), "Nível_03 is null", "Nível_03 Like '*" & cp(8 ) & "*'")
    f(9) = IIf(cp(9) = Chr(32), "Nível_04 is null", "Nível_04 Like '*" & cp(9) & "*'")
    f(10) = "Nível_05 Like '*" & cp(10) & "*'"

    strSplit = Len(cp(0) & "") & _
    "|" & Len(cp(1) & "") & _
    "|" & Len(cp(2) & "") & _
    "|" & Len(cp(3) & "") & _
    "|" & Len(cp(4) & "") & _
    "|" & Len(cp(5) & "") & _
    "|" & Len(cp(6) & "") & _
    "|" & Len(cp(7) & "") & _
    "|" & Len(cp(8 ) & "") & _
    "|" & Len(cp(9) & "") & _
    "|" & Len(cp(10) & "")

    k = Split(strSplit, "|")

    filtro = "": p = 0
    For p = 0 To UBound(k)
    If Val(k(p)) > 0 Then
    If booPos = False Then
    filtro = f(p): booPos = True
    Else
    filtro = filtro & " AND " & f(p)
    End If
    booFiltro = True
    End If
    Next p

    Forms!F02_Cons_P_Ação!F03_Base_P_Ação.Form.Filter = filtro
    Forms!F02_Cons_P_Ação!F03_Base_P_Ação.Form.FilterOn = booFiltro
    Me(NomeCampoFoco) = x
    If booFiltro Then
    Me(NomeCampoFoco).SelStart = Len(x & "")
    Else
    Me(NomeCampoFoco).SetFocus
    End If
    DoCmd.RunCommand acCmdRefresh
    End Function

    ------------------------------------------------------------
    Anexos
    Filtros Sequenciais AttachmentPA.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (69 Kb) Baixado 43 vez(es)
    avatar
    Gilnei
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 26/10/2012

    Filtros Sequenciais Empty Re: Filtros Sequenciais

    Mensagem  Gilnei 6/5/2013, 14:30

    Consegui ajustar o código! cheers

    Alterei a linha

    cp(p) = IIf(InStr(NomeCampoFoco, "F" & p + 1) > 0, x, Me("F" & p + 1))

    para

    cp(p) = IIf(InStr(NomeCampoFoco, "F" & Format(p + 1, "00")) > 0, x, Me("F" & Format(p + 1, "00")))

    Agora esta funcionándo...

      Data/hora atual: 19/5/2024, 20:25