Estava estudando programa Maestro do Avelino e queria fazer uma adaptação no código que filtra um subformulário a medida que se digita:
Veja,
IDCliente é uma combobox com origem da linha
- Código:
Private Function fncFiltrar(NomeCampoFoco As String)
Dim x As String, filtro As String, strSplit As String
Dim f(4) As String, cp(4) As Variant
Dim k As Variant, p As Byte
Dim booFiltro As Boolean, booPos As Boolean
On Error Resume Next
x = Me(NomeCampoFoco).Text: p = 0
For p = 0 To 2
cp(p) = IIf(InStr(NomeCampoFoco, "tx" & p + 1) > 0, x, Me("tx" & p + 1))
Next
f(0) = "Orc Like '" & cp(0) & "*'"
f(1) = IIf(cp(1) = Chr(32), "IDCliente is null", "IDCliente Like '" & cp(1) & "*'")
f(2) = IIf(cp(2) = Chr(32), "IDObra is null", "IDObra Like '" & cp(2) & "*'")
strSplit = Len(cp(0) & "") & "|" & Len(cp(1) & "") & "|" & Len(cp(2) & "") & "|" & Len(cp(3) & "")
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
On Error Resume Next
If booFiltro Then
Me(NomeCampoFoco).SelStart = Len(x & "")
Else
Me(NomeCampoFoco).SetFocus
End If
End Function
Veja,
IDCliente é uma combobox com origem da linha
- Código:
SELECT IDCliente, Cliente FROM Clientes ORDER BY Cliente;