Boa noite
Nesta função da autoria do Mestre Avelino, eu queria por mais 2 filtros na parte da imagem que tem uns quadrados amarelos:
A função filtra por
Data =fncFiltrar([Tx0].[Nome])
e por
Histórico =fncFiltrar([Tx1].[Nome])
Precisava de mais duas
Rubrica = fncFiltrar([Tx3].[Nome])
e
Entidade =fncFiltrar([Tx4].[Nome])
Dim X As String, strSplit As String
Dim f(4) As String, cp(4) As Variant
Dim k As Variant, p As Byte
Dim booPos As Boolean
'------------------------------------------------------------------
' Variável x recebe o valor digitado na caixa de texto de filtragem
'-------------------------------------------------------------------
X = Me(NomeCampoFoco).Text: p = 0
'--------------------------------------------------------------------------------------
'Passa para a matrix Cp() todos os valores digitados nas caixas de texto de filtragens
'--------------------------------------------------------------------------------------
For p = 0 To 1
cp(p) = IIf(InStr(NomeCampoFoco, "tx" & p + 1) > 0, X, Me("tx" & p + 1))
Next
'----------------------------------------------------------------------------------------------------------------------------
' Passa para a matrix f() os campos a serem filtrados, com os respectivos valores digitados nas caixas de texto de filtragens
'-----------------------------------------------------------------------------------------------------------------------------
f(0) = IIf(cp(o) = Chr(32), "historico=''", "Historico Like '*" & cp(0) & "*'")
f(1) = "Datamovimento Like '*" & cp(1) & "*'"
'------------------------------------------------------------------------------------------
'Passa para variável strSplit o comprimento de texto da cada caixa de texto de filtragens
'Comprimento zero(0) significa que a caixa de texto de filtragem se encontra vazia
'Exemplo: strSplit = 2|0|1|0
'Significa que os campos 2 e 4 não receberam valores para serem filtrados
'------------------------------------------------------------------------------------------
strSplit = Len(cp(0) & "") & "|" & Len(cp(1) & "")
k = Split(strSplit, "|")
'----------------------------------------------------------------------------------------------
'Filtro assume todos os valores de registros caso todos os campos de filtragens estejam limpos
'----------------------------------------------------------------------------------------------
filtro = "idcaixa > 0": p = 0
'------------------------------------------------------------------------------------------
'Monta a variável filtro com todos os campos de filtragens que possuirem valores digitados
'------------------------------------------------------------------------------------------
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
End If
Next p
'--------------------------------------------
'Carrga a listbox com os registros filtrados
'--------------------------------------------
Call fncCarregalista(filtro)
End Function
Nesta função da autoria do Mestre Avelino, eu queria por mais 2 filtros na parte da imagem que tem uns quadrados amarelos:
A função filtra por
Data =fncFiltrar([Tx0].[Nome])
e por
Histórico =fncFiltrar([Tx1].[Nome])
Precisava de mais duas
Rubrica = fncFiltrar([Tx3].[Nome])
e
Entidade =fncFiltrar([Tx4].[Nome])
Dim X As String, strSplit As String
Dim f(4) As String, cp(4) As Variant
Dim k As Variant, p As Byte
Dim booPos As Boolean
'------------------------------------------------------------------
' Variável x recebe o valor digitado na caixa de texto de filtragem
'-------------------------------------------------------------------
X = Me(NomeCampoFoco).Text: p = 0
'--------------------------------------------------------------------------------------
'Passa para a matrix Cp() todos os valores digitados nas caixas de texto de filtragens
'--------------------------------------------------------------------------------------
For p = 0 To 1
cp(p) = IIf(InStr(NomeCampoFoco, "tx" & p + 1) > 0, X, Me("tx" & p + 1))
Next
'----------------------------------------------------------------------------------------------------------------------------
' Passa para a matrix f() os campos a serem filtrados, com os respectivos valores digitados nas caixas de texto de filtragens
'-----------------------------------------------------------------------------------------------------------------------------
f(0) = IIf(cp(o) = Chr(32), "historico=''", "Historico Like '*" & cp(0) & "*'")
f(1) = "Datamovimento Like '*" & cp(1) & "*'"
'------------------------------------------------------------------------------------------
'Passa para variável strSplit o comprimento de texto da cada caixa de texto de filtragens
'Comprimento zero(0) significa que a caixa de texto de filtragem se encontra vazia
'Exemplo: strSplit = 2|0|1|0
'Significa que os campos 2 e 4 não receberam valores para serem filtrados
'------------------------------------------------------------------------------------------
strSplit = Len(cp(0) & "") & "|" & Len(cp(1) & "")
k = Split(strSplit, "|")
'----------------------------------------------------------------------------------------------
'Filtro assume todos os valores de registros caso todos os campos de filtragens estejam limpos
'----------------------------------------------------------------------------------------------
filtro = "idcaixa > 0": p = 0
'------------------------------------------------------------------------------------------
'Monta a variável filtro com todos os campos de filtragens que possuirem valores digitados
'------------------------------------------------------------------------------------------
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
End If
Next p
'--------------------------------------------
'Carrga a listbox com os registros filtrados
'--------------------------------------------
Call fncCarregalista(filtro)
End Function