MaximoAccess

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

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Dias úteis entre datas por mês

    Compartilhe
    avatar
    zcarloslopes
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 82
    Registrado : 28/10/2010

    [Resolvido]Dias úteis entre datas por mês

    Mensagem  zcarloslopes em 14/3/2019, 17:17

    Boa tarde a todos,

    Mais uma vez venho pedir ajuda, não encontrei nada nas pesquisas que pudesse ajudar...

    Tenho uma função (FunçãoX) que calcula os dias úteis entre datas, excluindo fds, feriados fixos e móveis, sem uso de tabela.

    Chamo a função: DiasUteis = FunçãoX([Data1],[Data2])

    Tendo uma tabela com os campos [Data1] e [Data2] queria uma função que me calculasse do mesmo modo, mas por mês, isto é, os dias úteis por cada mês.

    Sendo que, um mesmo mês pode ter mais que um intervalo de datas, assim como poderão existir intervalos que iniciem num mês e terminem no mês seguinte.

    O resultado será para apresentar em campos não vinculados de um formulário e/ou relatório.

    Alguma ideia por onde começar?

    Obrigado


    Última edição por zcarloslopes em 15/3/2019, 14:58, editado 1 vez(es)
    avatar
    zcarloslopes
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 82
    Registrado : 28/10/2010

    Re: [Resolvido]Dias úteis entre datas por mês

    Mensagem  zcarloslopes em 15/3/2019, 14:57

    Boa tarde,

    Na falta de melhor sugestão resolvi o problema da seguinte maneira: (deixo a minha solução para quem precisar)

    Fiz uma query com os campos da tabelaX [Ano], [DtaInicio] e [DtaFim] , e acrescentei campos calculados, um para cada mês do ano.

    Vou dar o exemplo do mês de Janeiro: (adaptar para os restantes)

    Para calcular o(s) intervalo(s) de datas que têm parte, ou estão incluídos em Janeiro existem 4 Possibilidade:

    1ª Possibilidade: [DtaInicio] >= 1º dia Janeiro E [DtaFim] <=  último dia Janeiro (intervalo dentro do mês de Janeiro)

    2ª Possibilidade: [DtaInicio] <= 1º dia Janeiro E [DtaFim] >=  último dia Janeiro (intervalo que começa antes de Janeiro e termina depois de Janeiro - inclui o mês inteiro)

    3ª Possibilidade: [DtaInicio] <= 1º dia Janeiro E [DtaFim] >= 1º dia Janeiro E [DtaFim] <=  último dia Janeiro (intervalo que começa antes de Janeiro e termina dentro do mês de Janeiro)

    4ª Possibilidade: [DtaInicio] >= 1º dia Janeiro E [DtaInicio] <= último dia Janeiro E [DtaFim] >=  último dia Janeiro (intervalo que começa dentro do mês de Janeiro e termina depois de Janeiro)

    Para cada Possibilidade verificada retorna o seguinte valor (pegando no exemplo da minha dúvida):

    1ª Possibilidade: FunçãoX(Nz([DtaInicio]);Nz([DtaFim]) -----> Intervalo das datas existentes

    2ª Possibilidade: FunçãoX(Nz(DateSerial([Ano];1;1));Nz(DateSerial([Ano];2;0)))  ----> 1º dia de Janeiro e último dia de Janeiro -  mês completo

    3ª Possibilidade: FunçãoX(Nz(DateSerial([Ano];1;1));Nz([DtaFim]) ----> 1º dia de Janeiro e data final

    4ª Possibilidade: FunçãoX(Nz([DtaInicio]);Nz(DateSerial([Ano];2;0))) ----> data de inicio e último dia de Janeiro


    No relatório e/ou formulário chamo o resultado numa textbox:

    =Nz(DSum("[Janeiro]";"ConsultaX";"[Ano] =  '" & Formulários!frm_X!Ano & "'"))

    Utilizo o DSum porque poderão haver mais que um período em cada mês.

    Obrigado

      Data/hora atual: 25/3/2019, 00:18