MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Segundo campo de pesquisa n/ respeita...

    Compartilhe

    Convidado
    Convidado

    [Resolvido]Segundo campo de pesquisa n/ respeita...

    Mensagem  Convidado em 2/2/2018, 21:11

    boas
    tenho um form, com um subform e três campos de pesquisa, em que tenho o seguinte código...

    Campo 1
    Código:
    Private Sub txtPesquisaAno_Change()
    Dim strFiltro As String
    strFiltro = "Ano LIKE '*" & Me.txtPesquisaAno.Text & "*' "
    Me.frmSub_Qry_FeriasMarcadas.Form.Filter = strFiltro
    Me.frmSub_Qry_FeriasMarcadas.Form.FilterOn = True
    End Sub

    Campo 2
    Código:
    Private Sub txtPesquisaMES_Change()
    Dim strFiltro As String
    strFiltro = "Meses LIKE '*" & Me.txtPesquisaMES.Text & "*' "
    Me.frmSub_Qry_FeriasMarcadas.Form.Filter = strFiltro
    Me.frmSub_Qry_FeriasMarcadas.Form.FilterOn = True
    End Sub

    Campo 3
    Código:
    Private Sub txtPesquisa_Change()
    Dim strFiltro As String
    strFiltro = "SectorDescricao LIKE '*" & Me.txtPesquisa.Text & "*' "
    Me.frmSub_Qry_FeriasMarcadas.Form.Filter = strFiltro
    Me.frmSub_Qry_FeriasMarcadas.Form.FilterOn = True
    End Sub

    A minha questão é que ao filtrar o mês( Campo 2 ), deixa de respeitar o que foi pesquisado no campo 1 !! ?
    Obrigado.


    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Segundo campo de pesquisa n/ respeita...

    Mensagem  Noobezinho em 3/2/2018, 10:58

    Marco

    Exato !

    Porque da maneira que está fazendo, cada campo ou controle é um filtro isolado.

    Em rápidas palavras, precisa adicionar o resultado do campo anterior ao filtro atual:

    Por exemplo:

    Na sessão declarações da página VBA do formulário:

    Dim strFiltroCampo1 As String, strFiltroCampo2 As String; strFiltroCampo3 As String

    No campo 1:

    Me.frmSub_Qry_FeriasMarcadas.Form.Filter = strFiltroCampo1

    Campo2:

    Me.frmSub_Qry_FeriasMarcadas.Form.Filter = strFiltroCampo1 + strFiltroCampo2

    Campo 3

    Me.frmSub_Qry_FeriasMarcadas.Form.Filter = strFiltroCampo1 + strFiltroCampo2 + strFiltroCampo3

    Veja que estou te passando a ideia não que isso funcione de fato, pois não testei.

    Talvez tenha que adicionar os critérios anteriores na linha de cima onde tem a instrução SQL que define o filtro.

    [ ]'s


    Convidado
    Convidado

    Re: [Resolvido]Segundo campo de pesquisa n/ respeita...

    Mensagem  Convidado em 3/2/2018, 13:29

    boas amigo...
    Fiz o que me falou, mas sem êxito ! posso ter feito algo errado. Como tal deixo parte do bd para uma analise e melhor ajuda. Obrigado

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Segundo campo de pesquisa n/ respeita...

    Mensagem  Noobezinho em 3/2/2018, 14:11

    Marco

    O código exemplo que precisa.

    Estude-o e aplique no teu projeto.

    Veja que é uma função, a qual será chamada a cada campo:


    Código:

    Public Function fncFiltrar(NomeCampoFoco As String)
    Dim x As String, filtro As String
    Dim cp(4) As Variant
    Dim k As Variant, p As Byte

    x = Me(NomeCampoFoco).Text: p = 0
    For p = 0 To 3
        cp(p) = IIf(InStr(NomeCampoFoco, "tx" & p + 1) > 0, x, Me("tx" & p + 1))
    Next

    filtro = IIf(Len(cp(0) & "") = 0, "", "DataDopedido Like '*" & cp(0) & "*' AND ")
    filtro = filtro & IIf(Len(cp(1) & "") = 0, "", "CidadeDeDestino Like '*" & cp(1) & "*' AND ")
    filtro = filtro & IIf(Len(cp(2) & "") = 0, "", "RegiãoDeDestino Like '*" & cp(2) & "*' AND ")
    filtro = filtro & IIf(Len(cp(3) & "") = 0, "", "PaísDeDestino Like '*" & cp(3) & "*' AND")

    If filtro = "" Then
        Me.Filter = "": Me.FilterOn = False
        Me(NomeCampoFoco).SetFocus
        Exit Function
    End If

    filtro = Mid(filtro, 1, Len(filtro) - 4)
    Me.Filter = filtro
    Me.FilterOn = True
    Me(NomeCampoFoco) = x
    Me(NomeCampoFoco).SelStart = Len(x & "")
    End Function


    [ ]'s

    Convidado
    Convidado

    Re: [Resolvido]Segundo campo de pesquisa n/ respeita...

    Mensagem  Convidado em 4/2/2018, 10:35

    Obrigado amigo Noob !
    Olhei para o seu código tentei executar mas sem sucesso... há algo que não estou a "pescar" !
    Conseguimos/ consegue dar me mais algumas pistas ?! ?
    Obrigado

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Segundo campo de pesquisa n/ respeita...

    Mensagem  Noobezinho em 4/2/2018, 10:53

    Marco

    Também achei que não iria conseguir, eu realmente não gosto desse filtro, ou não me dou bem com ele.Razz  

    Então, estou disponibilizando um exemplo que tenho em meus alfarrábios e que funciona perfeitamente.

    Estude o código que envolve os critérios da pesquisa.

    Existe uma função: AdicionarAWhere()

    Como o nome já diz, ela adiciona os critérios a consulta.

    Para cada campo é uma chamada a função para que ela vá adicionando

    os critério na futura consulta que será realizada.

    Veja que no exemplo tem 4 campos, portanto 4 chamadas a essa função.

    Qualquer dúvida, retorne

    [ ]'s

    Convidado
    Convidado

    Re: [Resolvido]Segundo campo de pesquisa n/ respeita...

    Mensagem  Convidado em 4/2/2018, 14:21

    Prezado Noob ! Obrigado...
    Já lá cheguei estou só a ajustar algumas "coisitas" mas acho que entendi... só que só consigo obter a filtragem após clicar a segunda vez... não estou a entender o porque ?! !
    O Código ficará :
    Código:
        ' by Noob - maximoaccess.com

    após terminar deixo o resultado. Obrigado

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Segundo campo de pesquisa n/ respeita...

    Mensagem  Noobezinho em 4/2/2018, 15:01


    Ele deve funcionar sempre que clicar uma vez no botão Mostrar Clientes.

    E deve retornar a pesquisa de qualquer campo, mesmo que os outros estejam em branco

    Sabe depurar o código VBA?

    [ ]'s


    Convidado
    Convidado

    Re: [Resolvido]Segundo campo de pesquisa n/ respeita...

    Mensagem  Convidado em 4/2/2018, 17:40

    Noob . . .
    Obrigado ! agora sim após depurar esta em conformidade.
    Se precisar reabro o tópico !
    Obrigado... abraço para você e uma vez mais obrigado.

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Segundo campo de pesquisa n/ respeita...

    Mensagem  Noobezinho em 4/2/2018, 19:13

    Ótimo Marco

    Valeu o retorno

    Boa sorte!

      Data/hora atual: 17/12/2018, 10:22