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]Classificar consulta

    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    [Resolvido]Classificar consulta Empty Classificar consulta

    Mensagem  OLDRIVG 20/5/2012, 18:11

    Prezados do forum,

    criei uma consulta que retorna datas de aniversários de cadstrados. Porém preciso que as datas sejam classificadas em ordem crescente. Atá aí beleza. Ela está classificando. Só que a classificação está sendo feita pelo ano e depois pelo dia e mês. Por ex. as datas
    05/02/1945,
    07/02/1956,
    01/02/1965,
    05/02/1944,
    03/02/1958,
    08/02/1975,
    06/02/1945,
    08/02/1945,
    10/02/1944 e
    11/02/1946,

    estão sendo classificadas assim:
    05/02/1944,
    10/02/1944,
    05/02/1945,
    06/02/1945,
    08/02/1945,
    11/02/1946,
    07/02/1956,
    03/02/1958,
    01/02/1965 e
    08/02/1975.

    Preciso que a classificação seja relaizada pelo dia do mês e não pelo ano, que no exemplo ficaria assim:
    01/02/1965,
    03/02/1958,
    05/02/1944,
    05/02/1945,
    06/02/1945,
    07/02/1956,
    08/02/1945,
    08/02/1975,
    10/02/1944 e
    11/02/1946.

    Tentei utilizar a expressão Mês([tabela].[DATNASC]) na consulta mas não funcionou. Se alguém souber uma solução agradeço a ajuda.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  Alexandre Neves 20/5/2012, 18:25

    Boa tarde, Old

    Para colocar por ordem de dia, do mês e do ano
    SELECT * ORDER BY Day(Campodata), Month(CampoData), Year(CampoData)
    avatar
    Convidad
    Convidado


    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  Convidad 20/5/2012, 18:25


    Olá

    Pode usar as funções Dia, Mês ou Ano em um campo calculado na consulta e definir o critério de classificação.
    O campo calculado deve estar antes do campo de Data.

    Seria assim:
    Dia: Dia([NomeCampoData])

    avatar
    Convidado
    Convidado


    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  Convidado 20/5/2012, 18:46

    Eu pensei assim:

    Para classificar pelo dia:
    Em um campo não acoplado na consulta: dia: Format([Dataex];"d")
    Critérios: Crescente

    Agora... se houver dois dias "10" um para o mes 02 e outro mes 03 ficará assim
    DataEx dia
    1/2/1965 01
    3/2/1958 03
    5/2/1945 05
    5/2/1944 05
    6/2/1945 06
    7/2/1956 07
    8/2/1975 08
    8/2/1945 08
    10/3/1957 10
    10/2/1944 10

    11/2/1946 11

    Testei tambem da forma como Alexandre falou..

    Mas ambos somente colocaram os dias em forma crescente, porem dando esta questao de dois dias 10 em datas diferente.

    Cumprimentos.
    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  OLDRIVG 20/5/2012, 21:49

    Agradeço a atenção dos senhores,

    caro Alexandre Neves, no sua sugestão eu teria que ter um campo para o dia, outro para o mês e outro para o ano, correto? Se eu estiver correto, o campo no qual deverá ser feita a classificação é único. Ou seja, a data de nascimento é digitada em um so campo e no formato dd/mm/yyyy. Se eu estiver errado, peço-lhe, por gentileza, que me corrija.

    Caro Harysohn, eu criei dois campos não acoplados na tabela e coloquei a expressões Expr1: Formato([DataDeNascimento];"m") e Expr2: Formato([DataDeNascimento];"d"), mas não funcionou. Retorna erro ao executar.
    Outro detalhe, Harysohn, esta consulta irá gerar um relatório e este será pelo mês. Assim, não terá o risco de meses diferentes no mesmo relatório e não acontecerá o verificado por você nas datas de exemplo 10/3/1957 10 e 10/2/1944 10.

    Caro Norberto, na sua sugestão não teria que referenciar a tabela onde será excutada a consulta? Se tiver, eu já tentei usando a expressão Mês([tabela].[DATNASC]) em campo não acoplado mas não funcionou.
    avatar
    Convidad
    Convidado


    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  Convidad 20/5/2012, 21:57


    Não precisa os campos na tabela.

    Use as funções em campos não acoplados (calculados) na consulta.

    CampoDia: Dia([DATNASC])
    CampoMês: Mês([DATNASC])
    CampoAno: Ano([DATNASC])

    Acima são exemplos para as 3 situações: colocando-os na devida ordem na grade da consulta, pode obter qualquer classificação que quiser.


    O autor desta mensagem foi banido do fórum - Mostrar mensagem
    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  OLDRIVG 20/5/2012, 22:39

    Colega Norberto, mais uma vez obrigado.
    Não estou acostumado com consultas. Assim sendo, peço-lhe, se possivel, que me instrua.

    Na grade da consulta em questão existem os seguintes campos acoplados a tabela Tbl_Geral:
    Nome, Telefone e DataDeNascimento, nesta ordem. Se bem entendi o que você escreveu eu terei que inserir os campos
    Dia([DataDeNascimento])
    Mês([DataDeNascimento])
    Ano([DataDeNascimento])
    manualmente na grade da consulta, sem aclopá-los e antes do campo DataDeNascimento e as expressões Dia([DataDeNascimento]), Mes([DataDeNascimento])e Ano([DataDeNascimento]) seriam colocadas na linha "campo" da grade,correto?

    Colega Acao,
    a razão desta formatalçao é o fato de que é gerado um relatório no primeiro dia de todos os meses para que seja feito um contato telefônico com o aniversariante para felicitá-lo. Como o relatório gerado na situação em que está causa um certo trabalho tendo em vista que o usuário está tendo que percorrer linha a linha para saber se na data "x" tem mais de um aniversariante, até o ultimo dia do mês, caso se conseguir classificar pelo dia, não será nescessário verificar linha a linha as datas, certo? Esta é a razão. Caso tenha uma outra forma de solução, ficar-lhe-ei agradecido.
    O autor desta mensagem foi banido do fórum - Mostrar mensagem
    avatar
    Convidad
    Convidado


    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  Convidad 20/5/2012, 22:59


    Os campos da consulta seriam estes:
    Nome - Telefone - CampoDia: Dia([DATNASC]) - CampoMes: Mês([DATNASC]) - CampoAno: Ano([DATNASC]) - DataDeNascimento

    Na linha Classificação dos campos calculados, escolha Crescente ou Decrescente.

    Devem estar, sim, antes do campo DataDeNascimento, pois o Access constrói a ordem de classificação da esquerda para a direita, considerando a ordem das colunas na consulta.

    Observe que não precisa, necessariamente, dos 3 campos calculados. Depende do resultado da classificação que quer. Não estou levando em conta nenhuma classificação em particular.

    Teste.


    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  OLDRIVG 20/5/2012, 23:19

    Colega Acao, obrigado pela a atenção.

    Na consulta existente já existe a instrução abaixo

    SELECT tbl_geral.Afiliado, tbl_geral.NomeDoAfiliado, tbl_geral.DataDeNascimento, tbl_geral.TelefoneResidencial, tbl_geral.TelefoneCelularAfiliado
    FROM tbl_geral
    WHERE (((tbl_geral.Afiliado)="1") AND ((Format([DataDeNascimento],"mm"))=[Digite o número do mês: 01, 02, etc]))
    ORDER BY tbl_geral.NomeDoAfiliado;

    Tentei inserir a sua instrução, mas não consegui. E o link sugerido para consulta não está abrindo.

    Colega Norberto,

    fiz o teste e não funcionou. Continua classificando pelo ano apesar da linha "classificação" está em branco em todos os campos exceto o criado "Campo Dia: Dia([DataDeNascimento])". Só usei um porque não necessito dos outros.
    avatar
    Convidad
    Convidado


    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  Convidad 20/5/2012, 23:22


    Poste a SQL da consulta.

    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  OLDRIVG 20/5/2012, 23:35

    Norberto,
    Abaixo a instrução após criar o campo dia sugerido por você.

    SELECT tbl_geral.Afiliado, tbl_geral.NomeDoAfiliado, Day([DataDeNascimento]) AS [Campo Dia], tbl_geral.DataDeNascimento, tbl_geral.TelefoneResidencial, tbl_geral.TelefoneCelularAfiliado
    FROM tbl_geral
    WHERE (((tbl_geral.Afiliado)="1") AND ((Format([DataDeNascimento],"mm"))=[Digite o número do mês: 01, 02, etc]))
    ORDER BY Day([DataDeNascimento]);


    avatar
    Convidado
    Convidado


    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  Convidado 20/5/2012, 23:48

    http://dl.dropbox.com/u/26441349/OlderiVG_20_05.rar

    Cumprimentos.
    avatar
    Convidad
    Convidado


    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  Convidad 20/5/2012, 23:59


    E mais ...

    Anexos
    [Resolvido]Classificar consulta AttachmentClassificar.zip
    (46 Kb) Baixado 33 vez(es)
    avatar
    Convidado
    Convidado


    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  Convidado 21/5/2012, 00:17

    Perfect! Noberto
    avatar
    Convidad
    Convidado


    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  Convidad 21/5/2012, 00:25


    Vindo de ti, mestre, ganhei o dia!


    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  OLDRIVG 21/5/2012, 00:31

    Caro Norberto,

    você esqueceu de uma instrução na consulta. Verifique a instrução SQL que postei.

    SELECT tbl_geral.Afiliado, tbl_geral.NomeDoAfiliado, Day([DataDeNascimento]) AS [Campo Dia], tbl_geral.DataDeNascimento, tbl_geral.TelefoneResidencial, tbl_geral.TelefoneCelularAfiliado
    FROM tbl_geral
    WHERE (((tbl_geral.Afiliado)="1") AND ((Format([DataDeNascimento],"mm"))=[Digite o número do mês: 01, 02, etc]))
    ORDER BY Day([DataDeNascimento]);

    A consulta tem a instrução em vermelho a qual foi retirada.

    Coloquei a consulta que você criou para abrir o relatório e não retornou nenhuma data de nascimento.
    Coloquei na sua consulta a instrução que você retirou e retornou erro.

    Em resumo: infelizmente não funcionou.

    A expressão que você retirou é que abre a janela para o usuário digitar o número e o nome do mês (critérios)para executar a consulta.

    Caro Harysohn,

    a versão do access que utilizo é 2003. Portanto, não deu para ver seu exemplo. Mas lhe agradeço.
    avatar
    Convidad
    Convidado


    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  Convidad 21/5/2012, 00:45


    Estou achando que tem problema de Nomes aí.

    Você já citou o campo data como DataDeNascimento e como DATNASC.
    Verifique os Nomes nas tabelas.

    Observe que no exemplo que enviei funciona. Então, se retorna dados no exemplo mas não retorna quando usa em seu bd, é porque tem erro no seu bd.

    Quanto a este critério que faltou, coloque no critério do campo CampoMês: Mês([DataDeNascimento]) :
    [Digite o Mês]

    avatar
    Convidado
    Convidado


    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  Convidado 21/5/2012, 01:00

    Percebi que estás a utiliza uma Imputbox da consulta para colocar o mes...

    Porque nao faz um FOmulário com um subForm, com uma caixa para filtrar quando digita?

    é melhor do que o usuário ter acesso a consulta.

    Cumprimentos.
    avatar
    Convidad
    Convidado


    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  Convidad 21/5/2012, 01:03


    Concordo contigo Harysohn!

    Aqui um exemplo de form de critérios:

    http://maximoaccess.forumeiros.com/t5526-formulario-de-criterios

    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  OLDRIVG 21/5/2012, 01:13

    O nome correto é o que está na instrução SQL que lhe enviei. Ou seja DataDeNascimento.

    Acrescentei a instrução que foi retirada na sua consulta e ficou como está abaixo:

    SELECT tbl_geral.Afiliado, tbl_geral.NomeDoAfiliado, Month([DataDeNascimento]) AS CampoMês, Day([DataDeNascimento]) AS CampoDia, tbl_geral.DataDeNascimento, tbl_geral.TelefoneResidencial, tbl_geral.TelefoneCelularAfiliado, Format([DataDeNascimento],"mm") AS Expr1
    FROM tbl_geral
    WHERE (((tbl_geral.Afiliado)="1") AND ((Format([DataDeNascimento],"mm"))=[Digite o número do mês: 01, 02, etc]))
    ORDER BY Month([DataDeNascimento]), Day([DataDeNascimento]);

    E funcionou somente ao executar a consulta fora do relatório. Quando a consulta é executada na abertura do relatório é que não ocorre a classificação. Ou seja, no relatório não vem a classificação da consulta.
    Então lhe pergunto: como se faz a referencia de classificação no relatório? Vi no design do mesmo que tem a opção de classificação, mas não estou sabendo como referenciá-la.

    Quanto a sua consulta não retornar nenhuma data de aniversário foi porque você colocou o campo "Afiliado" como se fosse uma sequencia e não é. É um critério (1 ou 2). Mudei e funcionou.

    Caso você possa me ajudar com relação ao relatório neste tópico, agradeço. Caso não, vamos abrir outro tópico.
    avatar
    Convidado
    Convidado


    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  Convidado 21/5/2012, 01:22

    Porque nao nos envia os objetos relacionados para que possamos ver?
    avatar
    Convidad
    Convidado


    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  Convidad 21/5/2012, 01:23



    Você continua com o critério no campo DataDeNascimento...
    Porque não tenta colocar como indiquei:
    CampoMês: Mês([DataDeNascimento])
    Na linha de Critério: [Digite o Mês]

    Daí não precisa Format nenhum.

    Se não houver ordem estabelecida em Classificar/Agrupar no relatório, a classificação na consulta de origem é que vale.

    Se quiser classificar no relatório, em Classificar/Agrupar vá escolhendo os campos na ordem que quer classificar (de cima para baixo) e na classificação Crescente ou Decrescente.


    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  OLDRIVG 21/5/2012, 02:16

    Prezado Norberto,

    coloquei o critério como instruiu e funciona. Mas mesmo assim somente na consulta. No relatório não.

    No relatório as opções de Classificado por e Classificado por ativado estão, respectivamente, "em branco" e "Não". Quanto a opção Classificar/agrupar que você cita, não achei nas propriedades do relatório.
    O fato de ter sido criado novos campos na consulta não implica em criar novo relatório?
    Realmente, não quer funcionar de maneira alguma a classificação no relatório.

    Colega Harysohn,
    quanto a sua sugestão de criar Formulários com subformulários, estive olhando o exemplo indicado pelo Norberto e penso que os usuários não irão querer desta forma. Este relatório é para impressão e da forma que foi criado é mais funcional para o
    uso rotineiro. E os usuários não acessam a consulta. Somente o relatório. Mas agradeço a sua sugestão.


    Prezados Norberto e Harysohn.

    Agradeço a ambos pela a ajuda. Consegui fazer funcionar.

    Como escrevi linhas acima, foi só criar um novo relatório com a consulta modificada que funcionou legal. A classificação funciona no novo relatório.
    Obrigado aos senhores e até a próxima.
    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  OLDRIVG 21/5/2012, 02:33

    Não abriu apareceu o "Resolvido" no post anterior.
    avatar
    Convidad
    Convidado


    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  Convidad 21/5/2012, 02:37


    Para exibir a janela Classificar/Agrupar, clique no ícone na barra de Ferramentas, ou na barra de menus em Exibir > Classificar e agrupar. (Com o relatório aberto em modo Design.)

    A propriedade Fonte de Registro do relatório precisa ser esta consulta que funciona.

    A propriedade Fonte do Controle dos campos do relatório devem estar atualizadas e corretas.
    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  OLDRIVG 21/5/2012, 02:50

    Ok, Norberto. Localizei.


    Funfou legal. Desta forma vai me economizar tempo.

    Obrigado
    avatar
    Convidad
    Convidado


    [Resolvido]Classificar consulta Empty Retorno

    Mensagem  Convidad 21/5/2012, 03:09


    Disponha. Grato pelo retorno!
    O autor desta mensagem foi banido do fórum - Mostrar mensagem
    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  OLDRIVG 21/5/2012, 12:34

    Colega Acao,
    obrigado pela sua atenção e empenho. Não desprezarei a sua sugestão.

    Conteúdo patrocinado


    [Resolvido]Classificar consulta Empty Re: [Resolvido]Classificar consulta

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 19/5/2024, 00:51