... Assinatura do site por 3 anos + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$182,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Contar apenas dias úteis em uma consulta

Usuário Leandro:

Bom dia,

preciso contar apenas os dias úteis de uma tabela, no campo "DATA R".  Por exemplo, um material com data do dia 01/09/2016, deveria estar com 2 dias.

Utilizei

SeImed([Data R]=Data();0;Data()-[Data R])

Mas esta fórmula calcula todos os dias, retornando 4 dias.

Como posso fazer para contar apenas os dias úteis?

Suporte:

Leandro, copie a função abaixo para um módulo global:

Public Function fncDiasUteis(dataLançamento As Date, DataRef As Date) As Integer
Dim j%, dataAnalisada As Date
dataAnalisada = dataLançamento + 1
Do While Not dataAnalisada > DataRef
    If Eval("weekday(#" & Format(dataAnalisada, "mm/dd/yyyy") & "#) between 2 and 6") Then
            j = j + 1
    End If
    dataAnalisada = dataAnalisada + 1
Loop
fncDiasUteis = j
End Function

Na consulta, crie o campo virtual DiasUteis:

DiasUteis: fncDiasUteis([data R];data())

Caso tenha que levar em consideração os feriados, altere a função para:

Public Function fncDiasUteis(dataLançamento As Date, DataRef As Date) As Integer
Dim j%, dataAnalisada As Date
dataAnalisada = dataLançamento + 1
Do While Not dataAnalisada > DataRef
    If Eval("weekday(#" & Format(dataAnalisada, "mm/dd/yyyy") & "#) between 2 and 6") Then
        If Not fncFeriado(dataAnalisada) Then
            j = j + 1
        End If
    End If
    dataAnalisada = dataAnalisada + 1
Loop
fncDiasUteis = j
End Function

A função fncFeriado(), você monta conforme este meu artigo.

Usuário Leandro:

Avelino,

a consulta de Dias Úteis esta funcionando perfeitamente.

A questão dos feriados é um pouco mais complicada, pois o que preciso considerar, são os dias Não Úteis, que envolvem além dos feriados, dias de greve, por exemplo, e isso é impossível prever.

Por isso, pensei em uma tabela ou formulário, onde eu digitaria manualmente os dias Não Úteis e a consulta de Dias Úteis, excluiria os dias digitados.

Isso é possível ?

Suporte:

Leandro, para consultar a tabela de dias Não Úteis, basta utilizar a função Dcount().  Algo assim:

Public Function fncDiasUteis(dataLançamento As Date, DataRef As Date) As Integer
Dim j%, dataAnalisada As Date
dataAnalisada = dataLançamento + 1
Do While Not dataAnalisada > DataRef
    If Eval("weekday(#" & Format(dataAnalisada, "mm/dd/yyyy") & "#) between 2 and 6") Then
        If Dcount("*","tblDiasNãoUteis","DataNãoUtil = #" & Format(dataAnalisada,"mm/dd/yyyy") & "#") = 0 Then
            j = j + 1
        End If
    End If
    dataAnalisada = dataAnalisada + 1
Loop
fncDiasUteis = j
End Function

Usuário Leandro:

Avelino,

funcionando perfeitamente!


 

 


Não há comentário

Envie seu comentário: