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


    Filtrando subformulário a medida que se digita (adaptação)

    rg3915
    rg3915
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 119
    Registrado : 17/06/2013

    Filtrando subformulário a medida que se digita (adaptação) Empty Filtrando subformulário a medida que se digita (adaptação)

    Mensagem  rg3915 9/8/2013, 13:10

    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:

    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
    Pergunta: como eu faço para localizar o nome do Cliente em IDCliente e Obra em IDObra sendo que eles são combobox?
    Veja,
    IDCliente é uma combobox com origem da linha
    Código:
    SELECT IDCliente, Cliente FROM Clientes ORDER BY Cliente;
    Então eu não sei como localizar os Clientes visto que o meu campo está trabalhando com números pela primeira coluna IDCliente.
    avatar
    Convidado
    Convidado


    Filtrando subformulário a medida que se digita (adaptação) Empty Re: Filtrando subformulário a medida que se digita (adaptação)

    Mensagem  Convidado 10/8/2013, 14:58

    Bom dia,

    Você poderia tentar passar o nome do Cliente/Obra para uma caixa de texto e usá-la no código:

    No evento Após Atualizar da ComboCliente:

    Me.CaixaDeTexto = Me.ComboCliente.Column(1) ' segunda coluna


    Deve resolver.


    Nivaldo.

      Data/hora atual: 3/5/2024, 00:17