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
------------------------------------------------------------
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
- PA.zip
- Você não tem permissão para fazer download dos arquivos anexados.
- (69 Kb) Baixado 43 vez(es)