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


4 participantes

    [Resolvido]Filtrar vários campos

    alpedro
    alpedro
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 165
    Registrado : 08/02/2016

    [Resolvido]Filtrar vários campos Empty [Resolvido]Filtrar vários campos

    Mensagem  alpedro 31/3/2016, 08:54

    Olá. Tenho um formulário que filtra um subformulário ao clicar no botão pesquisar. Tem 4 campos para filtrar e apliquei o seguinte código:

    Private Sub btn_pesquisa_Click()

    Dim Ok As Integer, cadTítulo As String, entCuadroMensaje As Integer
       Dim sFiltro1 As String
       Dim sFiltro2 As String
       Dim sFiltro3 As String
       Dim sFiltro4 As String

       sFiltro1 = "ESPECIALIDADE LIKE'*" & Me.pesquisa_especialidade & "*'"
       sFiltro2 = "LOCALIDADE LIKE'*" & Me.pesquisa_localidade & "*'"
       sFiltro3 = "PAÍS LIKE'*" & Me.pesquisa_país & "*'"
       sFiltro4 = "EMPRESA LIKE'*" & Me.pesquisa_firma & "*'"

    If IsNull(Me.pesquisa_especialidade) And IsNull(Me.pesquisa_localidade) And IsNull(Me.pesquisa_país) And IsNull(Me.pesquisa_firma) Then
       DoCmd.Beep
       entCuadroMensaje = vbOKOnly + vbExclamation + vbDefaultButton1
       Ok = MsgBox("Escreva um campo.", vbOKOnly + vbInformation + vbDefaultButton1)
     
    ElseIf Not IsNull(Me.pesquisa_especialidade) Or Not IsNull(Me.pesquisa_localidade) Or Not IsNull(Me.pesquisa_país) Or Not IsNull(Me.pesquisa_firma) Then

       Me.subformA.Form.Filter = sFiltro1
       ' Me.subformA.Form.Filter = sFiltro2
       ' Me.subformA.Form.Filter = sFiltro3
       ' Me.subformA.Form.Filter = sFiltro4


       Me.subformA.Form.FilterOn = True

    Else
       Me.subformA.Requery
           If Me.subformA ....... Then

                      MsgBox "Não corresponde na base de dados", vbOKOnly + vbInformation + vbDefaultButton1
           End If
    End If

    End Sub

    Contudo se no código tiver filtrar só com um campo , filtra corretamente, com 4 campos no código não funciona, com aviso no Me.subformA.Form.Filter .
    Como corrigir?
    Alguém sabe completar e corrigir o código caso nada corresponda na base de dados o que se escreveu na pesquisa?

    Obrigado
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11026
    Registrado : 04/11/2009

    [Resolvido]Filtrar vários campos Empty Re: [Resolvido]Filtrar vários campos

    Mensagem  JPaulo 31/3/2016, 13:33

    Teste e retorne;

    Código:
    Private Sub btn_pesquisa_Click()
    Dim Ok As Integer, cadTítulo As String, entCuadroMensaje As Integer
    Dim strWhere As String

    If IsNull(Me.pesquisa_especialidade) And IsNull(Me.pesquisa_localidade) And IsNull(Me.pesquisa_país) And IsNull(Me.pesquisa_firma) Then
      DoCmd.Beep
      entCuadroMensaje = vbOKOnly + vbExclamation + vbDefaultButton1
      Ok = MsgBox("Escreva um campo.", vbOKOnly + vbInformation + vbDefaultButton1)
     
    ElseIf Not IsNull(Me.pesquisa_especialidade) Or Not IsNull(Me.pesquisa_localidade) Or Not IsNull(Me.pesquisa_país) Or Not IsNull(Me.pesquisa_firma) Then

    If Nz(Me.pesquisa_especialidade, "") <> "" Then
        strWhere = strWhere & "[ESPECIALIDADE] LIKE'*" & Me.pesquisa_especialidade & "*' OR "
    End If

    If Nz(Me.pesquisa_localidade, "") <> "" Then
        strWhere = strWhere & "[LOCALIDADE] = LIKE'*" & Me.pesquisa_localidade & "*' OR "
    End If

    If Nz(Me.pesquisa_país, "") <> "" Then
        strWhere = strWhere & "[PAÍS] LIKE'*" & Me.pesquisa_país & "*' OR "
    End If

    If Nz(Me.pesquisa_firma, "") <> "" Then
        strWhere = strWhere & "[EMPRESA] LIKE'*" & Me.pesquisa_firma & "*' OR "
    End If

    If strWhere <> "" Then
        strWhere = Left(strWhere, Len(strWhere) - 5) 'Remove os OR extra
        Me.subformA.Form.Filter = strWhere
        Me.subformA.Form.FilterOn = True
    Else
        Me.subformA.Form.Filter = ""
        Me.subformA.Form.FilterOn = False
        Me.subformA.Requery
    End If
            MsgBox "Não corresponde na base de dados", vbOKOnly + vbInformation + vbDefaultButton1
          End If
    End If

    End Sub


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Filtrar vários campos Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Filtrar vários campos Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Filtrar vários campos Folder_announce_new Instruções SQL como utilizar...
    alpedro
    alpedro
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 165
    Registrado : 08/02/2016

    [Resolvido]Filtrar vários campos Empty Re: [Resolvido]Filtrar vários campos

    Mensagem  alpedro 1/4/2016, 02:47

    Olá.
    Testei, e tem um End If a mais e deu error 3075.
    Se pesquisar madeira dá o aviso       error 3075  erro de sintaxe na cadeia na expressão de consulta '[ESPECIALIDADE] LIKE ' *madeira*'.

    Contudo reconfigurei a base de dados.
    No formulário PESQUISAR, ao
    Private Sub pesquisa_especialidade_Click()
       Me.lista_especialidade.Requery
    End Sub
    atualiza a lista.

    No formulário FILTRAR eliminei o botão pesquisar para ao
    Private Sub pesquisa_especialidade_Click()
       Me.subformA.Requery
    End Sub
    não atualiza o subform.
    É imprescindível o botão Pesquisar?

    Queria também mudar o botão Exportar para Excel para o formulário FILTAR, mas dá erro em q.SQL = Me.subformA.RowSource
    Como corrigir?
    Obrigado.
    Anexos
    [Resolvido]Filtrar vários campos AttachmentCONTACTOS base de dados - 32&64bits - com dados - v2.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (345 Kb) Baixado 16 vez(es)
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11026
    Registrado : 04/11/2009

    [Resolvido]Filtrar vários campos Empty Re: [Resolvido]Filtrar vários campos

    Mensagem  JPaulo 1/4/2016, 09:35

    Muita bagunçada ae;

    No form FILTRAR;

    Código:
    Private Sub strFiltra()
    Dim strWhere As String

    If Nz(Me.pesquisa_especialidade, "") <> "" Then
        strWhere = strWhere & "[ESPECIALIDADE] LIKE '*" & Me.pesquisa_especialidade & "*' AND "
    End If

    If Nz(Me.pesquisa_localidade, "") <> "" Then
        strWhere = strWhere & "[LOCALIDADE] LIKE '*" & Me.pesquisa_localidade & "*' AND "
    End If

    If Nz(Me.pesquisa_país, "") <> "" Then
        strWhere = strWhere & "[PAÍS] LIKE '*" & Me.pesquisa_país & "*' AND "
    End If

    If Nz(Me.pesquisa_firma, "") <> "" Then
        strWhere = strWhere & "[EMPRESA] LIKE '*" & Me.pesquisa_firma & "*' AND "
    End If

    If strWhere <> "" Then
        strWhere = Left(strWhere, Len(strWhere) - 5) 'Remove os AND extra
        Me.subformA.Form.Filter = strWhere
        Me.subformA.Form.FilterOn = True
        Me.subformA.Requery
    Else
        Me.subformA.Form.Filter = ""
        Me.subformA.Form.FilterOn = False
        Me.subformA.Requery
    End If
    End Sub

    Private Sub pesquisa_especialidade_AfterUpdate()
    Call strFiltra
    End Sub

    Private Sub pesquisa_firma_AfterUpdate()
    Call strFiltra
    End Sub

    Private Sub pesquisa_localidade_AfterUpdate()
    Call strFiltra
    End Sub

    Private Sub pesquisa_país_AfterUpdate()
    Call strFiltra
    End Sub

    Para exportar não necessita de abrir querydefs;

    http://dl.dropboxusercontent.com/u/771097/CONTACTOS%20base%20de%20dados%20%20-%2032%2664bits%20-%20com%20dados%20-%20v2_ODL.zip



    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Filtrar vários campos Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Filtrar vários campos Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Filtrar vários campos Folder_announce_new Instruções SQL como utilizar...
    alpedro
    alpedro
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 165
    Registrado : 08/02/2016

    [Resolvido]Filtrar vários campos Empty Re: [Resolvido]Filtrar vários campos

    Mensagem  alpedro 1/4/2016, 12:03

    Obrigado, está tudo certo.
    Very Happy
    avatar
    erinaldo
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 55
    Registrado : 27/09/2010

    [Resolvido]Filtrar vários campos Empty Re: [Resolvido]Filtrar vários campos

    Mensagem  erinaldo 1/4/2016, 15:01

    segue exemplo, acho que é iso que voce precisa....


    Creditos:  Arrow Paulo R. Robilotta
    Anexos
    [Resolvido]Filtrar vários campos AttachmentFiltrosSequenciais.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (43 Kb) Baixado 40 vez(es)
    alpedro
    alpedro
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 165
    Registrado : 08/02/2016

    [Resolvido]Filtrar vários campos Empty Re: [Resolvido]Filtrar vários campos

    Mensagem  alpedro 1/4/2016, 15:40

    Gostava de saber mais sobre o significado dos códigos de access. Há algum livro ou pdf aconselhável?
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11026
    Registrado : 04/11/2009

    [Resolvido]Filtrar vários campos Empty Re: [Resolvido]Filtrar vários campos

    Mensagem  JPaulo 1/4/2016, 17:57



    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Filtrar vários campos Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Filtrar vários campos Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Filtrar vários campos Folder_announce_new Instruções SQL como utilizar...
    avatar
    FlavioLima
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 155
    Registrado : 14/02/2016

    [Resolvido]Filtrar vários campos Empty Re: [Resolvido]Filtrar vários campos

    Mensagem  FlavioLima 1/4/2016, 19:18

    Alguém podia me ajudar, estou com um problema parecido, mas como meu formulario é muito diferente não sei se é possível adaptar as situações.

    Se é eu não consegui.

    Hospedei um exemplo la no outro post.

    Segue link:

    https://www.maximoaccess.com/t26122-como-modificar-o-codigo-pra-pesquisar-em-2-colunas-em-uma-caixa-de-listagem#185391

    Conteúdo patrocinado


    [Resolvido]Filtrar vários campos Empty Re: [Resolvido]Filtrar vários campos

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/11/2024, 04:15