Boa tarde,
Venho novamente tirar dúvidas relacionadas a filtragem no fórum, desta vez não consigo fazer com que as filtragens se combinem, ou seja, se eu ativar um filtro por combo box, e após, ativar a outra combo, ele não combina. É como se ao ativar uma combo o filtro anterior se desfizesse.
O código que eu uso, é uma adaptação da função de filtragem para formulário contínuo do Maestro.
Venho novamente tirar dúvidas relacionadas a filtragem no fórum, desta vez não consigo fazer com que as filtragens se combinem, ou seja, se eu ativar um filtro por combo box, e após, ativar a outra combo, ele não combina. É como se ao ativar uma combo o filtro anterior se desfizesse.
O código que eu uso, é uma adaptação da função de filtragem para formulário contínuo do Maestro.
- Código:
Public Function fncFiltrar(NomeCampoFoco As String)
Dim x As String, filtro As String, strSplit As String
Dim f(7) As String, cp(7) As Variant
Dim K As Variant, p As Byte
Dim booFiltro As Boolean, booPos As Boolean
x = Me(NomeCampoFoco).Text
p = 0
For p = 0 To 6
cp(p) = IIf(InStr(NomeCampoFoco, "tx" & p + 1) > 0, x, Me("tx" & p + 1))
Next
Str (Fun_Matricula)
cp(5) = Tx6.Column(0)
cp(6) = Tx7.Column(0)
f(0) = IIf(cp(0) = Chr(32), "Fun_Matricula is null", "Fun_Matricula Like '*" & cp(0) & "*'")
f(1) = IIf(cp(1) = Chr(32), "Fun_Nome is null", "Fun_Nome Like '*" & cp(1) & "*'")
f(2) = IIf(cp(2) = Chr(32), "Car_Nome is null", "Car_Nome Like '*" & cp(2) & "*'")
f(3) = IIf(cp(3) = Chr(32), "Cdc_Nome is null", "Cdc_Nome Like '*" & cp(3) & "*'")
f(4) = IIf(cp(4) = Chr(32), "Lid_Nome is null", "Lid_Nome Like '*" & cp(4) & "*'")
f(5) = IIf(cp(5) = Chr(32), "Lia_Codigo is null", "Lia_Codigo Like '*" & cp(5) & "*'")
f(6) = IIf(cp(6) = Chr(32), "Lva_Codigo is null", "Lva_Codigo Like '*" & cp(6) & "*'")
strSplit = Len(cp(0) & "") & "|" & Len(cp(1) & "") & "|" & Len(cp(2) & "") & "|" & Len(cp(3) & "") & "|" & Len(cp(4) & "") & "|" & Len(cp(5) & "") & "|" & Len(cp(6) & "")
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
Me.Filter = filtro
Me.FilterOn = booFiltro
Me(NomeCampoFoco) = x
If booFiltro Then
Me(NomeCampoFoco).SelStart = Len(x & "")
Else
Me(NomeCampoFoco).SetFocus
End If
End Function