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]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado

    avatar
    asls_soares
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 6
    Registrado : 21/10/2013

    [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado Empty [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado

    Mensagem  asls_soares 7/5/2014, 02:51

    Pessoal, boa noite

    Primeiro gostaria de agradecer a vocês. Tenho aprendido muito por aqui. Vcs realmente são demais!

    Eu tô com uma dúvida que já procurei bastante no fórum (neste e em vários outros) e realmente não encontrei nada. Nem sei se isso é possivel de ser feito.

    Inclusive nem sei também se meu título está correto... Mas vou tentar explicar da forma mais clara possível:

    Eu tenho uma tabela com informações de alunos que fazem aulas de futebol (nome do aluno, identidade, cpf, data de nascimento, nome do pai, nome da mãe, etc). Eu queria criar uma consulta (associada a essa tabela) na qual o usuário pudesse escolher, a partir de um outro formulário, qual variável da tabela entraria nessa consulta.

    Eu fiz o seguinte: Criei um formulário (frm_geraconsulta) no qual tem caixas de seleção para cada variável da tabela (que não estão acopladas) e um botão que geraria a consulta. O usuário selecionaria as variáveis que ele quer que apareça na consulta e clicaria no botão, que geraria a consulta com as variáveis que ele escolheu.
    Acontece que no evento "ao clicar" do botão (geraconsulta), coloquei um código vba para gerar a consulta, que fiz via SQL. Porém não consigo, dentro do SELECT, colocar a condição de entrar somente as variáveis selecionadas no formulário.

    Alguém teria a solução? Isso é possível de ser feito?

    Agradeço desde já.
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado Empty Re: [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado

    Mensagem  Convidado 7/5/2014, 03:51

    Boa noite Assis, seja bem vindo ao Fórum!

    Se eu entendi corretamente.. você deseja filtrar uma consulta.. porém os critério seriam variados....

    Suponha que você tem um campo chamado cidade.. onde tem várias Cidades:  X,Y,N etc...

    Desejaria que a consulta retornasse uma cidade ou mais de uma dependendo do critério selecionado no formulário.. é isso?

    Assim.. se no formulário tiver.. Cidade X.. a consulta abriria exibindo apenas os dados da CidadeX...Se no formulário tivesse duas cidades.. Cidade X e cidade Y... a consulta exibiria apenas as duas cidades...
    Bem isto é um exemplo..

    É isto que deseja?

    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado Empty Re: [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado

    Mensagem  Convidado 7/5/2014, 03:59

    A dica acima é para um campo onde poderia selecionar mais de um critério.. porém para um campo..
    Agora lendo mais atentamente à sua questão... você deseja selecionar os campos para filtro dos critério...

    Ex:
    nome do aluno, identidade, cpf, data de nascimento, nome do pai, nome da mãe, etc

    Se o usuário selecionar Nome do aluno e cpf, a consulta seria filtrada apenas por estes... excluindo os demais..
    Se o usuario selecionar Nome do Aluno, cpf e data de nascimento.. a consulta teria os filtros para estes 3...excluindo os demais..

    é isto?

    Qual a solução se assemelha ao que necessita.. a primeira ou esta?

    Cumprimentos.
    avatar
    asls_soares
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 6
    Registrado : 21/10/2013

    [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado Empty Re: [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado

    Mensagem  asls_soares 7/5/2014, 04:08

    Harysohn, obrigada pelo retorno.

    A segunda se assemelha mais ao que eu quero...

    O que eu quero é selecionar variáveis e não critérios dentro de variáveis

    Por exemplo: Na tabela "tbl_aluno" eu tenho as variáveis:
    Nome_aluno
    rg_aluno
    cpf_aluno
    nome_mae
    nome_pai
    data_nascimento
    escola
    serie
    turma

    E quero um código crie uma consulta (temporária, que seja apagado depois de visualizar) com as variáveis que o usuário escolher.
    Ficaria assim: o usuário entrará no formulário não acoplado e selecionará as variáveis que ele quer que apareça na consulta.
    Exemplo: ele seleciona nome_aluno, cpf_aluno e data_nasc, clica no botao e aparece a consulta somente com essas três variáveis.

    Ficou mais claro?
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado Empty Re: [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado

    Mensagem  Convidado 7/5/2014, 04:35

    Vamos à algumas correções antes..

    Você falou que a segunda se assemelha mais ao que necessita.. Vamos ao que você falou:


    A segunda se assemelha mais ao que eu quero...

    O que eu quero é selecionar variáveis e não critérios dentro de variáveis

    Por exemplo: Na tabela "tbl_aluno" eu tenho as variáveis:
    Nome_aluno
    rg_aluno
    cpf_aluno
    nome_mae
    nome_pai
    data_nascimento
    escola
    serie
    turma

    Você inverteu as informaçãoes e citou algo que não é.. tecnicamente falando... apropriado perante à dúvida..

    Primeiro: "O que quero é selecionar variáveis e nao critérios dentro de variáveis"

    O que é uma variável: Como o nome diz.. algo que varia...que ora pode ter um valor/informação.. ora pode ter outro...
    Variáveis são declaradas em módulos ou forms.. e comportam valores de campos, caixas textos, etc...
    Variáveis não são e não podem ser utilizadas em consultas, exceto tempVar.. variáveis temporárias que são passíveis de serem utilizadas em "Critérios" nas consulta...

    Segundo: "Por exemplo: Na tabela "tbl_aluno" eu tenho as variáveis"
    Em uma tabela você não tem variáveis.. Você tem campos!


    Portanto.. Você deseja que o usuário selecione os "Campos" que a consulta exibirá..

    Se ele selecionar o campo1 e campo2... A consulta só será filtrada por estes..
    Se ele selecionar o campo1, campo2 e o campo3.... a consulta só será filtrada pelos 3...


    Acuse se compreendeu..

    Aguardo.

    Cumprimentos.
    avatar
    asls_soares
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 6
    Registrado : 21/10/2013

    [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado Empty Re: [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado

    Mensagem  asls_soares 7/5/2014, 04:41

    Harysohn, é isso mesmo.
    Peço perdão pela confusão.
    Eu quero que o usuário selecione os campos que ele quer que apareça na consulta.
    Obrigada pelo esclarecimento.
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado Empty Re: [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado

    Mensagem  Convidado 7/5/2014, 05:08

    Outra pequena correção e a solução que a meu ver pode lhe servir... Lembrando.. que poderá haver outras... Que lhe atendam melhor.. ou pior... A que passarei foi a que me veio a mente de imediato.

    Pois bem, você falou:

    Eu quero que o usuário selecione os campos que ele quer que apareça na consulta.

    A consulta exbirá todos os campos.. então você quer que o usuário selecione os campos que deverão ser filtrados.. e não exibidos..

    Se for isto a minha sugestão é:

    Um grupo de opções para que o usuário selecione os campos...

    No formulário.. caixas texto em oculto.. uma para cada campo possivel de ser selecionado.
    Vamos supor uma consulta com 3 campos:
    Campo1, Campo2, Campo3

    Então no formulário...
    1 - Caixas de seleção para os 3 campos... Cada chkBox ligada a uma caixa texto no form..
    Se o usuário clicar na chkBox1, tornaria ativa a caixaTexto1
    Se o usuário clicar na chkBox2, totnaria ativa a caixaTexto2.. e assim sussecivamente..

    Oras.. Se as caixas texto só estarão ativas de acordo com a seleção nas chekBoxes.. significa que o usuário terá que preencher as textsBoxes para a consulta..

    Se clicar em 1 chkBox.. So terá uma caixa texto disponível para o critério
    Se clicar em 2 cjkBox's Terá duas caixas texto disponível para os critério...

    Assim sendo.. na consulta.. colocará critérios em todos os campos passíveis de receber filtro.. cada coluna condizente com sua textBox...

    E no critério colocará uma expressão que caso não haja criterio para esta coluna.. a mesma não impeça a consulta de funcionar..

    Este critério deverá ser assim:

    Como "*" & Forms!NomeDoForm!NomeDaCaixaTexto & "*"

    Assim mesmo que esta caixa texto não seja ativada por não ter sido selecionada na sua chkBox correspondente.. Ela não impedirá a consulta de funcionar..

    Esta é minha idéia..

    Cumprimentos.
    avatar
    asls_soares
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 6
    Registrado : 21/10/2013

    [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado Empty Re: [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado

    Mensagem  asls_soares 10/5/2014, 21:24

    Oi Harysohn,

    Desculpa a demora...

    A questão é exatamente esta: eu não quero que a consulta exiba todos os campos. Eu quero que a consulta exiba somente os campos que o usuário marcar no formulário.
    se o usuário selecionar "nome, nome da mae e cpf do aluno" a consulta deveria exibir somente estes 3 campos...

    é possível fazer isso?
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado Empty Re: [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado

    Mensagem  Convidado 11/5/2014, 16:18

    Envie-nos o br citando os objetos envolvidos para que possamos ver isto pra ti

    Cumprimentos.
    avatar
    asls_soares
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 6
    Registrado : 21/10/2013

    [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado Empty Re: [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado

    Mensagem  asls_soares 19/5/2014, 02:15

    Harysohn,
    Segue o banco. Apaguei todos os objetos que não interferem na dúvida. Ficaram apenas 3 objetos: a tabela principal (tbl_aluno. É dessa tabela que eu quero selecionar os campos para aparecer na consulta); o formulário de cadastro dos alunos (frm_cadastro - acoplado à tabela "tbl_aluno") e o formulário que serviria para selecionar os campos para gerar a consulta (frm_geraconsulta). Neste último formulário criei uma caixa de seleção para cada campo da tabela "tbl_aluno" e uma caixa de texto que poderia auxiliar no SELECT da consulta a ser gerada, mas não sei como.

    Agradeço imensamente a ajuda.
    Anexos
    [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado AttachmentAlunos.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (107 Kb) Baixado 25 vez(es)
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado Empty Re: [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado

    Mensagem  Convidado 20/5/2014, 12:55

    Bom dia Assis, Vamos lá...

    1 - não é necessário as caixas texto ao lado da caixa de seleção, exclua-as
    2 - A caixa de seleção deverá ter obrigatoriamente o mesmo nome do campo na tabela

    >> O que foi feito?
        Percorro todas as caixas de seleção no formulário, em estando marcada carrego na matriz o nome da caixa de seleção que é igual ao nome do campo na tabela, incremento um contador para quantas caixas de seleção foram marcadas, portanto o contador (x) será igual ao número de campos que deseja que sejam exibidos
    - Crio um case para o contador e assim de acordo com o número de campos crio a consulta com apenas estes campos.
    - Está feito para os campos nome e data de nascimento (observe que modifiquei o nome do campo nome para NomeAluno), nome é uma palavra reservada do acess


    Private Sub geraconsulta_Click()
    Dim qdf As QueryDef
    Dim ctl As Control
    Dim X As Byte
    '------------------------------------------------
    'Crio uma matriz com o número de campos da tabela
    '------------------------------------------------
    Dim k(1 To 26)

    '-----------------------------------
    'Percorre os controles do formulário
    '-----------------------------------
    For Each ctl In Me.Controls
     '---------------------------------------------
     'Seleciona o tipo de controle a ser verificado
     '---------------------------------------------
     Select Case ctl.ControlType
        Case acCheckBox, acTextBox ', acComboBox , acListBox, acOptionGroup
            '-------------------------------------------
            'Se o controle não está marcado pula o mesmo
            '-------------------------------------------
            If Me(ctl.Name).Value = -1 Then
                '---------------------
                'Incremento o contador
                '---------------------
                X = X + 1
                '-------------------------------------------------------------------------
                'Carrego na matriz na posição referente ao número x com o nome do controle
                'Este nome deve ser obrigatoriamente igual ao nome do campo na tabela
                'Lembre-se que não se deve utilizar palavras reservadas ao Access como por
                'exemplo "Nome","Valor" etc.
                '-------------------------------------------------------------------------
                k(X) = ctl.Name
            End If
        End Select
    '---------------------------
    'Vai para o próximo controle
    '---------------------------
    Next ctl
    '------------------------------------------------------------------------------------------------------
    'Abro um case para o número de x, executando a rotina para quantos números de campos foram selecionados
    'criando a consulta com o mesmo número de campos
    '------------------------------------------------------------------------------------------------------
    Select Case X
        Case 1
            Set qdf = DBEngine(0)(0).CreateQueryDef("qryTemporario", "SELECT " & k(1) & " FROM tbl_aluno")
        Case 2
            Set qdf = DBEngine(0)(0).CreateQueryDef("qryTemporario", "SELECT " & k(1) & ", " & k(2) & " FROM tbl_aluno")
        Case 3
        Case 4
        Case 5
        Case 6
        Case 7
        Case 8
        Case 9
        Case 10
        Case 11
        Case 12
        Case 13
        Case 14
        Case 15
        Case 16
        Case 17
        Case 18
        Case 19
        Case 20
        Case 21
        Case 22
        Case 23
        Case 24
        Case 25
        Case 26
        Case Else
    End Select
    '---------------
    'zero o contador
    '---------------
    X = 0
    '----------------
    'Encerro o objeto
    '----------------
    qdf.Close
    '--------------------------
    'Abro a consulta temporária
    '--------------------------
    DoCmd.OpenQuery "qryTemporario", acViewNormal, acReadOnly
    '----------------------------
    'Excluo a consulta temporária
    '----------------------------
    'CurrentDb.QueryDefs.Delete ("qryTemporario")
    End Sub


    Cumprimentos.
    avatar
    asls_soares
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 6
    Registrado : 21/10/2013

    [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado Empty Re: [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado

    Mensagem  asls_soares 25/5/2014, 18:58

    Harysohn, muito, muito, muito obrigada!!!!
    Funcionou perfeitamente!!! eu não teria nunca conseguido sozinha. ainda me falta muito conhecimento...
    mudei o título do tópico para, se caso alguém esteja com a mesma dúvida que eu tive, encontrá-lo mais fácil. No lugar de "variável" coloquei "campo", pois como vc bem me explicou eu queria selecionar os campos da tabela.
    Obrigada mais uma vez, não só (principalmente) por ter solucionado o caso, mas também pelas dicas.

    mathusalmeida
    mathusalmeida
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 30/08/2011

    [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado Empty Re: [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado

    Mensagem  mathusalmeida 25/5/2014, 21:05

    Olá colega, para que os demais membros deste fórum possam usufruir desta maravilhosa solução, post o exemplo funcionando. Certamente será de grande utilidade para todos.

    Sucesso!
    avatar
    Convidado
    Convidado


    [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado Empty Re: [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado

    Mensagem  Convidado 27/5/2014, 11:59

    Eis o exemplo funcionando para dois campos, conforme o post respondido por mim.


    Cumprimentos.
    avatar
    ELEcom
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1
    Registrado : 05/05/2017

    [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado Empty Re: [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado

    Mensagem  ELEcom 6/6/2017, 20:43

    Boa tarde HARYSOHN!

    Gostei muito da sua ideia para este código mas ele não está filtrando.
    Você poderia ajustá-lo para que o resultado filtrasse de acordo com os critérios digitados para os campos pelo usuário?

    Desde já agradeço!

    Conteúdo patrocinado


    [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado Empty Re: [Resolvido]Consulta personalizada - escolher campos a partir de caixa de seleção de formulário não acoplado

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 19:05