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

    Como resolver o problema da primeira e última semana do ano parciais?

    Marcos Minoru
    Marcos Minoru
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 88
    Registrado : 22/08/2014

    Como resolver o problema da primeira e última semana do ano parciais? Empty Como resolver o problema da primeira e última semana do ano parciais?

    Mensagem  Marcos Minoru 25/9/2014, 20:21

    Existem muitos casos que precisamos usar critérios para filtrar por semana. Daí que surge o problema com a primeira semana do ano ou a última semana...
    Como se sabe, no Access a semana começa no domingo e vai até sábado, tendo o ano 53 semanas. Ou seja, se a primeira ou a última semana do ano começar no domingo e terminar no sábado, teríamos uma semana inteira.
    No entanto, nem sempre o ano começa ou termina com uma semana inteira para o Access. Um exemplo será a última semana deste ano:

    Como resolver o problema da primeira e última semana do ano parciais? V7fsw3

    Como podemos ver na imagem, a última semana deste ano começará no domingo (28/12/2014) e terminará na quarta (31/12/2014), tendo a semana apenas 4 dias e sendo a semana número 53 do ano.
    E obviamente, a primeira semana de 2015 começará na quinta (01/01/2015) e terminará no sábado (03/01/2015), tendo a semana 3 dias e sendo a semana número 1 do ano.


    Continuando no exemplo da última semana de 2014. Como fazer para o Access entender a última semana como:
    Domingo  28/12/2014
    Segunda  29/12/2014
    Terça      30/12/2014
    Quarta    31/12/2014
    Quinta    01/01/2015
    Sexta     02/01/2015
    Sábado   03/01/2015

    Como tratar isso?



    * Não achei ainda algum artigo falando sobre isto. Achei interessante abordá-lo...
    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1601
    Registrado : 12/11/2009

    Como resolver o problema da primeira e última semana do ano parciais? Empty Re: Como resolver o problema da primeira e última semana do ano parciais?

    Mensagem  Leandro 2/10/2014, 15:54

    Bom dia Marcos,
    E se com a função DateAdd você pegar a data do primeiro dia da semana e acrescentar mais 6 dias?

    Exemplo: DateAdd("d", 6, Data)

    Marcos Minoru
    Marcos Minoru
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 88
    Registrado : 22/08/2014

    Como resolver o problema da primeira e última semana do ano parciais? Empty Re: Como resolver o problema da primeira e última semana do ano parciais?

    Mensagem  Marcos Minoru 2/10/2014, 20:39

    Leandro,

    Vc diz usar a função DateAdd para filtrar por semana, e não acontecer o problema mencionado?

    Sei pouco sobre critérios, ultimamente venho estudando pra aprender...
    Tentei testar o critério passado assim: SomData("d";6;Data())
    E não trouxe nenhuma data.

    Pelo que sei, esta função soma à data um período de tempo. Neste caso, seria somar a data atual +6 dias, o que seria exatamente igual a usar o critério: Entre Data() e Data()+6
    O problema de somar 6 dias a data atual, é que não estamos dizendo qual o dia que termina a semana. Desta forma, ao consultar em uma segunda, retornaria de segunda a domingo. Porém, ao consultar em um sábado, não retornaria sábado e domingo, e sim sábado a sexta. Entende?

    Por isto a necessidade de filtrar utilizando um critério tipo: Entre Data() e Data()-DiaSem(Data())+7. Para filtrar desta forma, o uso da função DiaSem é fundamental. Só que como o Access trata a semana por números e existem as semanas parciais do ano, aí que complica...
    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1601
    Registrado : 12/11/2009

    Como resolver o problema da primeira e última semana do ano parciais? Empty Re: Como resolver o problema da primeira e última semana do ano parciais?

    Mensagem  Leandro 2/10/2014, 21:04

    E assim:

    Me!Texto2 = DateAdd("d", 7 - Weekday(Texto0), Me!Texto0)

    Convenções:

    Me!Texto2 é o campo que recebe a data, nesse exemplo é somente ilustrativo.
    Me!Texto0 é o campo que contém a data.

    Marcos Minoru
    Marcos Minoru
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 88
    Registrado : 22/08/2014

    Como resolver o problema da primeira e última semana do ano parciais? Empty Re: Como resolver o problema da primeira e última semana do ano parciais?

    Mensagem  Marcos Minoru 2/10/2014, 21:33

    Critério pela consulta mesmo. E não via VBA

    Exemplo, vamos supor que tenho vários eventos com datas diferentes. Como ficaria o critério para uma consulta retornar as datas do dia atual até domingo da semana atual?
    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1601
    Registrado : 12/11/2009

    Como resolver o problema da primeira e última semana do ano parciais? Empty Re: Como resolver o problema da primeira e última semana do ano parciais?

    Mensagem  Leandro 3/10/2014, 12:03

    Marcos, podemos montar o critério via VBA e usar na consulta, construindo uma função. Smile

    Public Function fncFimDaSemana() As Date
    ----fncFimDaSemana = DateAdd("d", 7 - Weekday(Now()), Now())
    End Function


    Não foi testada, mas se estiver funcionando corretamente, basta usar isso no critério da consulta.

    Entre Agora() E fncFimDaSemana()

    Para construir a função crie um novo módulo e cole a função acima dentro dele, nomeie com um nome diferente ok?

    Marcos Minoru
    Marcos Minoru
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 88
    Registrado : 22/08/2014

    Como resolver o problema da primeira e última semana do ano parciais? Empty Re: Como resolver o problema da primeira e última semana do ano parciais?

    Mensagem  Marcos Minoru 3/10/2014, 18:49

    Leandro, sem sucesso...

    Fica como se tivesse utilizando o critério: Entre Data() E Data()-DiaSem(Data())+7. Exibe da data atual até sábado, e o erro da primeira e última semana parciais do ano continua.

    Usando a função DiaSem acredito que sempre vá acontecer este problema.
    Utilizando a imagem da última semana desse ano dá para entender perfeitamente o motivo: o Access trata o sábado como último dia da semana, DA SEMANA ATUAL PARA ELE. E como ele conta as semanas por números (de 1 a 53 semanas). Então a última semana, número 53, será do dia 28/12/2014 (domingo) até 31/12/2014 (quarta) e não domingo á sábado. Porque dia 01/01/2015 para o Access já é semana número 1 do ano 2015.


    Não sei se existe alguma função de data específica para este caso. Ou se há algum tratamento, algo tipo: Se a primeira ou última semana do ano não totalizarem 7 dias, então ela é parcial e deve-se somar mais dias à ela para totalizar 7 dias...
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Como resolver o problema da primeira e última semana do ano parciais? Empty Re: Como resolver o problema da primeira e última semana do ano parciais?

    Mensagem  Alexandre Neves 3/10/2014, 21:21

    Boa noite, Marcos
    Crie pequeno exemplo para se trabalhar a questão


    .................................................................................
    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
    Marcos Minoru
    Marcos Minoru
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 88
    Registrado : 22/08/2014

    Como resolver o problema da primeira e última semana do ano parciais? Empty Re: Como resolver o problema da primeira e última semana do ano parciais?

    Mensagem  Marcos Minoru 4/10/2014, 00:04

    Leandro e Alexandre, estou falando besteira...

    O Access trata sim este problema, mas em caso, tipo:
    Tenho eventos que irão acontecer, ai tenho os nomes dos eventos e as datas...
                            Vamos supor:
                            Evento 001        28/12/2014 (domingo)
                            Evento 003        29/12/2014 (segunda)
                            Evento 004        30/12/2014 (terça)
                            Evento 005        31/12/2014 (quarta)
                             Evento 006        01/01/2015 (quinta)
                            Evento 007        02/01/2015 (sexta)
                            Evento 008        03/01/2015 (sábado)
    Utilizando o critério: Entre Data() E Data()-DiaSem(Data())+7, e considerando que o dia atual é 28/12/2014, realmente ele trás todas estas datas e eventos acima. De domingo a sábado, ainda que a semana tenha datas pertencentes à semana 53 de 2014 e semana 1 de 2015.


    O problema que estou tentando resolver, seria de casos que temos que trazer a data passada para data atual, como datas de aniversários por exemplo.
    Gostaria de filtrar aniversários que irão acontecer na semana atual. Ai para filtrar utilizando o critério acima, teria que trazer todas datas de nascimento para a data atual.
    Estou trazendo assim: DataAniversario: DataSerial(Ano(Data());Mês([Data de nascimento]);Dia([Data de nascimento])). O problema, é que assim converte todas datas de nascimento para o ano atual. Sendo que se estiver na data de 28/12/2014, realmente não vai aparecer as datas de 01/01/2015, 02/01/2015 e 03/01/2015. Porque quem fazia aniversário em janeiro, ficaram com o ano atual (2014) e ele já passou...

    Na realidade preciso de ajuda para criar um meio de filtrar os aniversários da semana. Pois este problema de semanas parciais vi que não existe...
    Aqui no forum o único exemplo é o do JPaulo:

    http://maximoaccess.forumeiros.com/t168-resolvidoalerta-de-aniversariante?highlight=aniversariante  (Mensagem Nº17 - Aniversariante_IV.rar)
    Parece que ninguém percebeu, mas esse exemplo está com o critério errado...
    Ele formata a data de nascimento para exibir apenas o dia, e nesse campo de dia ele aplica o critério: Between Date()-Weekday(Date())+1 And Date()-Weekday(Date();0)+5
    Me corrijam se eu estiver errado, mas esse critério necessita de uma data no formato DD/MM/AAAA e não apenas dia.



    Alguma idéia? Senão vou filtrar aniversariantes por mês, que aí não tem esse problema...rs! lol!
    Já perdi muito tempo com essa bobeira, só pela teimosia de querer resolver...

    Conteúdo patrocinado


    Como resolver o problema da primeira e última semana do ano parciais? Empty Re: Como resolver o problema da primeira e última semana do ano parciais?

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 03:08