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


3 participantes

    [Resolvido] Critério múltiplo em consulta utilizando tempvars

    avatar
    lucianonunes.jw
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 70
    Registrado : 12/10/2011

    [Resolvido] Critério múltiplo em consulta utilizando tempvars Empty [Resolvido] Critério múltiplo em consulta utilizando tempvars

    Mensagem  lucianonunes.jw 6/6/2014, 15:15

    Prezados, bom dia!

    Estou tendo dificuldade na seguinte situação:

    Criei uma tabela que contém valores que serão utilizados como critérios de seleção em uma consulta
    Esses valores são gravados em uma variável tempvars através de um controle no formulário
    Depois, coloquei a variável tempvars como critério na consulta
    Porém, como o critério é múltiplo, a consulta não retornar nenhum valor.
    Como teste, deixei apenas um valor e a consulta funcionou.

    Exemplo:

    Descrição Filtro / Valores Critério (tabela que será a fonte de dados de uma caixa de seleção no formulário)
    Sudeste = SP, MG, RJ, ES
    Sul = RS, SC, PR

    Se a tempvars recebe por exemplo "SP, MG, RJ, ES", ao executar a consulta, não retorna nenhum registro
    Se eu colocar apenas um valor, exemplo "SP", a consulta funciona.

    Como fazer a consulta funcionar com os 3 valores de critério retornados pela tempvars ("SP, MG, RJ, ES")?

    Se alguém souber de outro método que atinja os mesmos resultados (talvez usando outro controle, função, etc) ficarei grato com a sugestão.

    Em anexo um banco de dados de exemplo que coloquei depois de ter postado este tópico.
    Encontrei duas soluções para o problema ("Form2" e "Form3") colocando os valores em campos separados na tabela.

    Se alguém souber uma maneira de filtrar mantendo os valores no mesmo campo (no exemplo o formulário "form"), ficarei grato.

    Obrigado pela atenção!!!
    Anexos
    [Resolvido] Critério múltiplo em consulta utilizando tempvars AttachmentTeste.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (89 Kb) Baixado 9 vez(es)


    Última edição por lucianonunes.jw em 3/3/2017, 18:18, editado 3 vez(es)
    avatar
    Philipp Moreira
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 10/10/2013

    [Resolvido] Critério múltiplo em consulta utilizando tempvars Empty Re: [Resolvido] Critério múltiplo em consulta utilizando tempvars

    Mensagem  Philipp Moreira 6/6/2014, 22:28

    Na construção da consulta na condição Where tentou usar operador "IN" In ("Valor 1", "Valor 2", "valor 3") ao invés do operador "=" ?
    avatar
    lucianonunes.jw
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 70
    Registrado : 12/10/2011

    [Resolvido] Critério múltiplo em consulta utilizando tempvars Empty Re: [Resolvido] Critério múltiplo em consulta utilizando tempvars

    Mensagem  lucianonunes.jw 7/6/2014, 22:49

    Prezado  psmDeveloperJr ,

    Obrigado pelo retorno.
    Talvez daria para fazer assim se eu estivesse usando um recordset. Mas estou usando consultas então acredito que assim não dá para fazer.
    anexei um bd de exemplo onde no formulário "Form" está a situação explicada acima.
    mas acho que vou ter que fazer como demonstrado no form2 ou form3 que são soluções que encontrei posteriormente mas que não sei se são as melhores, mas funcionam.

    obrigado!
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3900
    Registrado : 04/04/2010

    [Resolvido] Critério múltiplo em consulta utilizando tempvars Empty Re: [Resolvido] Critério múltiplo em consulta utilizando tempvars

    Mensagem  Avelino Sampaio 8/6/2014, 09:55

    Olá!

    Segue uma proposta sem usar o tempvars.

    Private Sub bt_filtrar_Click()
    Dim qry As QueryDef
    If Len(Me!Cb_Regiao & "") = 0 Then Exit Sub
    Set qry = CurrentDb.QueryDefs("Cons_Filtro")
    qry.SQL = Mid(qry.SQL, 1, InStr(qry.SQL, "WHERE") + 5) & "Estado IN(" & Me!Cb_Regiao & ")"
    DoCmd.OpenQuery "Cons_Filtro"
    Set qry = Nothing
    End Sub


    Nota 1: Alterei a tabela estado, acrescentando apóstrofes aos nomes.

    Nota 2: Se esta consulta for para alimentar um relatório ou outro formulário, não há necessidade deste malabarismo.  Basta utilizar o argumento de filtragens na chamadas destes objetos. Exemplo:

    docmd.OpenReport "NomeDoRelatório",acViewPreview ,,"Estado IN(" & Me!Cb_Regiao & ")"

    Veja mais sobre filtragens neste meu artigo:

    http://www.usandoaccess.com.br/tutoriais/tuto35.asp?id=1#inicio

    Sucesso!
    Anexos
    [Resolvido] Critério múltiplo em consulta utilizando tempvars AttachmentTeste_rev.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (41 Kb) Baixado 17 vez(es)


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    avatar
    lucianonunes.jw
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 70
    Registrado : 12/10/2011

    [Resolvido] Critério múltiplo em consulta utilizando tempvars Empty Re: [Resolvido] Critério múltiplo em consulta utilizando tempvars

    Mensagem  lucianonunes.jw 8/6/2014, 15:17

    Avelino, muito bom!

    A solução foi espetacular. Também gostei muito das dicas. Inclusive no seu artigo (que é bem completo) tinha até um exemplo semelhante ao meu tópico.

    Agora também entendi a dica que o colega psmDeveloperJr havia dado.

    Mas gostaria de tirar só mais uma dúvida: Como tenho outras consultas com a necessidade deste mesmo filtro, vou ter que escrever este código para cada uma o que não vai ser nenhum problema.

    Mas pensei se teria alguma maneira de simplificarmos ainda mais. Na consulta "Cons_Filtro" tentei colocar diretamente no critério do campo "Estado" a expressão "In ([Formulários]![Form1]![Cb_Regiao])" para ver se funcionava, porém, não deu certo.

    Acredito que é porque da forma como fiz é retornado o valor da caixa de seleção entre aspas ("'MG','SP','RJ'"). Através do seu código fica sem as aspas ('MG','SP','RJ').

    Você saberia teria como fazer isso diretamente na consulta? Ou é apenas da maneira como você demonstrou mesmo?

    Obrigado!
    Anexos
    [Resolvido] Critério múltiplo em consulta utilizando tempvars AttachmentTeste2.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (89 Kb) Baixado 7 vez(es)

    Conteúdo patrocinado


    [Resolvido] Critério múltiplo em consulta utilizando tempvars Empty Re: [Resolvido] Critério múltiplo em consulta utilizando tempvars

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 12:55