MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Consulta com vários critérios

    avatar
    Ismael Silva
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 634
    Registrado : 11/12/2017

    [Resolvido]Consulta com vários critérios Empty [Resolvido]Consulta com vários critérios

    Mensagem  Ismael Silva em 9/3/2019, 22:36

    Boa noite,

    Gostaria de saber como faço para inserir vários critérios em um mesmo campo da consulta.

    Tentei utilizar assim, mas não está funcionando:

    Como "*" & [Forms]![Frm_filtros_C_Ismael]![Posto1] E [Forms]![Frm_filtros_C_Ismael]![Posto2] E [Forms]![Frm_filtros_C_Ismael]![Posto3] & "*"

    Tenho um Form de filtros, onde utilizei 3 campos: Posto1, Posto2 e Posto3.

    Alguma sugestão.

    Preciso dizer que antes já pesquisei no fórum, mas não encontrei nada de acordo com os critérios que coloquei para buscar.

    Obrigado

    Ismael.
    hiperjohn
    hiperjohn
    Intermediário
    Intermediário

    Respeito às Regras 100%

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

    [Resolvido]Consulta com vários critérios Empty Re: [Resolvido]Consulta com vários critérios

    Mensagem  hiperjohn em 9/3/2019, 23:28

    Cada critério deve ser precedido por um "como":

    Código:
    Como "*" & [Forms]![Frm_filtros_C_Ismael]![Posto1] Ou Como "*" & [Forms]![Frm_filtros_C_Ismael]![Posto2] & "*" Ou Como "*" & [Forms]![Frm_filtros_C_Ismael]![Posto3] & "*"

    O "Ou" vai retornar qualquer um dos três postos. Se você prefere registros que constem os três postos ao mesmo tempo, aí você troca o "Ou" pelo "E"(sem aspas).
    avatar
    Ismael Silva
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 634
    Registrado : 11/12/2017

    [Resolvido]Consulta com vários critérios Empty Re: [Resolvido]Consulta com vários critérios

    Mensagem  Ismael Silva em 10/3/2019, 01:34

    hiperjohn

    Obrigado pela dica, no entanto, fiz o teste com a sua sugestão, mas não filtrou corretamente. Os 3 campos. Posto1, Posto2 e Posto3, são apenas para que se eu precisar filtrar por algum posto específico, e se eu não colocar nenhum posto, trás todos os que eu tenho lançado.

    Onde será que pode estar o erro?
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7745
    Registrado : 05/11/2009

    [Resolvido]Consulta com vários critérios Empty Re: [Resolvido]Consulta com vários critérios

    Mensagem  Alexandre Neves em 10/3/2019, 08:53

    Bom dia,
    Comece com VBA, é mais poderoso e mais amigável


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    Ismael Silva
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 634
    Registrado : 11/12/2017

    [Resolvido]Consulta com vários critérios Empty Re: [Resolvido]Consulta com vários critérios

    Mensagem  Ismael Silva em 10/3/2019, 12:12

    Alexandre, segui sua dica, inclusive aproveitando um código que você fez pra mim em outro tópico.


    ' Ao inserir um critério no campo Posto1, filtrou corretamente, mas quando coloquei critérios nos campos Posto2 e Posto3, não filtrou nada. Onde está o meu erro?





    Private Sub Abrir_Form_Click()

    Dim strFiltro As String


    If Not IsNull(Posto1) Then
    If strFiltro = "" Then
    strFiltro = "Unidade='" & Posto1 & "'"
    Else
    strFiltro = strFiltro & " and Unidade='" & Posto1 & "'"
    End If
    End If



    If Not IsNull(Posto2) Then
    If strFiltro = "" Then
    strFiltro = "Unidade='" & Posto2 & "'"
    Else
    strFiltro = strFiltro & " and Unidade='" & Posto2 & "'"
    End If
    End If



    If Not IsNull(Posto3) Then
    If strFiltro = "" Then
    strFiltro = "Unidade='" & Posto3 & "'"
    Else
    strFiltro = strFiltro & " and Unidade='" & Posto3 & "'"
    End If
    End If



    DoCmd.OpenReport "Relatório1", acViewPreview, , strFiltro


    End Sub
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7745
    Registrado : 05/11/2009

    [Resolvido]Consulta com vários critérios Empty Re: [Resolvido]Consulta com vários critérios

    Mensagem  Alexandre Neves em 10/3/2019, 18:02

    Não explicou bem, mas provavelmente quer as condições funcionem separadamente. Se for isso, coloque OR em vez de AND


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    Ismael Silva
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 634
    Registrado : 11/12/2017

    [Resolvido]Consulta com vários critérios Empty Re: [Resolvido]Consulta com vários critérios

    Mensagem  Ismael Silva em 10/3/2019, 19:21

    Alexandre, consegui resolver agora, com VBA mesmo. Obrigado pela dica.
    avatar
    Tecnolog
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1
    Registrado : 28/08/2016

    [Resolvido]Consulta com vários critérios Empty Script VBA

    Mensagem  Tecnolog em 9/5/2019, 22:02

    Boa noite Ismael,

    Você poderia por gentileza compartilhar o script VBA que você utilizou?
    Estou passando pela mesma dúvida que você estava passando.
    avatar
    Ismael Silva
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 634
    Registrado : 11/12/2017

    [Resolvido]Consulta com vários critérios Empty Re: [Resolvido]Consulta com vários critérios

    Mensagem  Ismael Silva em 10/5/2019, 01:18

    Claro,

    Segue aí, o código que eu usei para resolver, no meu caso:


    Private Sub Abrir_Form_Click()

    On Error Resume Next

    Dim strFiltro As String




    If Not IsNull(Posto1) And Not IsNull(Posto2) Then
    If strFiltro = "" Then
    strFiltro = "(Unidade='" & Posto1 & "' or Unidade='" & Posto2 & "' or Unidade='" & Posto3 & COM & "')"
    Else
    strFiltro = strFiltro & " and (Unidade='" & Posto1 & "' or Unidade='" & Posto2 & COM & "')"
    End If
    ElseIf Not IsNull(Posto1) Then
    If strFiltro = "" Then
    strFiltro = "Unidade='" & Posto1 & "'"
    Else
    strFiltro = strFiltro & " and(Unidade ='" & Posto1 & COM & "'"
    End If


    ElseIf Not IsNull(Posto2) Then
    If strFiltro = "" Then
    strFiltro = "Unidade='" & Posto2 & "'"
    Else
    strFiltro = strFiltro & " and Unidade='" & Posto2 & COM & "'"
    End If



    ElseIf Not IsNull(Posto3) Then
    If strFiltro = "" Then
    strFiltro = "Unidade='" & Posto3 & "'"
    Else
    strFiltro = strFiltro & " and Unidade='" & Posto3 & COM & "'"
    End If
    End If


    If Not IsNull(Placa1) And Not IsNull(Placa2) Then
    If strFiltro = "" Then
    strFiltro = "(Placa='" & Placa1 & "' or Placa='" & Placa2 & "' or Placa='" & Placa3 & "' or Placa='" & Placa4 & "' or Placa='" & Placa5 & COM & "')"
    Else
    strFiltro = strFiltro & " and (Placa='" & Placa1 & "' or Placa='" & Placa2 & "' or Placa='" & Placa3 & "' or Placa='" & Placa4 & "' or Placa='" & Placa5 & COM & "')"
    End If


    ElseIf Not IsNull(Placa1) Then
    If strFiltro = "" Then
    strFiltro = "Placa='" & Placa1 & "'"
    Else
    strFiltro = strFiltro & " and(Placa ='" & Placa1 & COM & "'"
    End If


    ElseIf Not IsNull(Placa2) Then
    If strFiltro = "" Then
    strFiltro = "Placa='" & Placa2 & "'"
    Else
    strFiltro = strFiltro & " and Placa='" & Placa2 & COM & "'"
    End If



    ElseIf Not IsNull(Placa3) Then
    If strFiltro = "" Then
    strFiltro = "Placa='" & Placa3 & "'"
    Else
    strFiltro = strFiltro & " and Placa='" & Placa3 & COM & "'"
    End If



    ElseIf Not IsNull(Placa4) Then
    If strFiltro = "" Then
    strFiltro = "Placa='" & Placa4 & "'"
    Else
    strFiltro = strFiltro & " and Placa='" & Placa4 & COM & "'"
    End If


    ElseIf Not IsNull(Placa5) Then

    If strFiltro = "" Then
    strFiltro = "Placa='" & Placa5 & "'"
    Else
    strFiltro = strFiltro & " and Placa='" & Placa5 & COM & "'"

    End If


    ElseIf Not IsNull(Placa6) Then

    If strFiltro = "" Then
    strFiltro = "Placa='" & Placa6 & "'"
    Else
    strFiltro = strFiltro & " and Placa='" & Placa6 & COM & "'"

    End If

    ElseIf Not IsNull(Placa7) Then

    If strFiltro = "" Then
    strFiltro = "Placa='" & Placa7 & "'"
    Else
    strFiltro = strFiltro & " and Placa='" & Placa7 & COM & "'"

    End If

    ElseIf Not IsNull(Placa8) Then

    If strFiltro = "" Then
    strFiltro = "Placa='" & Placa8 & "'"
    Else
    strFiltro = strFiltro & " and Placa='" & Placa8 & COM & "'"

    End If

    ElseIf Not IsNull(Placa9) Then

    If strFiltro = "" Then
    strFiltro = "Placa='" & Placa9 & "'"
    Else
    strFiltro = strFiltro & " and Placa='" & Placa9 & COM & "'"

    End If

    ElseIf Not IsNull(Placa10) Then

    If strFiltro = "" Then
    strFiltro = "Placa='" & Placa10 & "'"
    Else
    strFiltro = strFiltro & " and Placa='" & Placa10 & COM & "'"

    End If


    ElseIf Not IsNull(Cidade) Then

    If strFiltro = "" Then
    strFiltro = "cid='" & Cidade & "'"
    Else
    strFiltro = strFiltro & " and cid='" & Cidade & COM & "'"

    End If


    ElseIf Not IsNull(Cidade2) Then

    If strFiltro = "" Then
    strFiltro = "cid='" & Cidade2 & "'"
    Else
    strFiltro = strFiltro & " and cid='" & Cidade2 & COM & "'"

    End If
    End If

    DoCmd.OpenReport "Relatório1", acViewPreview, , strFiltro


    End Sub

      Data/hora atual: 24/10/2020, 06:51