[resolvido] Contar apenas Dias Uteis !!!

Moderador: Avelino Sampaio

leandroandrea07
Mensagens: 133
Registrado em: 02 Mai 2016, 18:06

[resolvido] Contar apenas Dias Uteis !!!

Mensagempor leandroandrea07 » 05 Set 2016, 14:17

Bom dia,

preciso contar apenas os dias uteis 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 essa formula, calcula todos os dias, como o material do dia 01/09/2016, conta como 4 dias.

Como eu faria para contar os dias uteis apenas ?



Grato

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


Avatar do usuário
Avelino Sampaio
Mensagens: 2160
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Contar apenas Dias Uteis !!!

Mensagempor Avelino Sampaio » 05 Set 2016, 14:43

Leandro,

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

Código:
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 considerção os feriados, altere a função para:

Código:
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


Aonde a função fncFeriado, vc monta conforme este meu artigo:

http://www.usandoaccess.com.br/tutoriais/ajustar-data-vencimento-para-dia-util.asp?id=1#inicio

Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

leandroandrea07
Mensagens: 133
Registrado em: 02 Mai 2016, 18:06

Re: Contar apenas Dias Uteis !!!

Mensagempor leandroandrea07 » 05 Set 2016, 16:39

Avelino,

a consulta de Dias Uteis esta funcionando perfeitamente.
A questão dos feriados é um pouco mais complicada, pois o que preciso considerar, são os dias "Não Uteis", que envolvem alem dos feriados, dias com "greve", por exemplo, e isso é impossível de prever.

Por isso, pensei em uma "Tabela" ou Formulário", onde eu digitaria manualmente os dias "Não Uteis" e a consulta de dias uteis, excluiria os dias digitados.


Isso seria possível ?

Avatar do usuário
Avelino Sampaio
Mensagens: 2160
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Contar apenas Dias Uteis !!!

Mensagempor Avelino Sampaio » 05 Set 2016, 18:14

Leandro,

para consulta a tabela de dias não úteis, basta utilizar a função dcount(). Algo assim:

Código:
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


Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


leandroandrea07
Mensagens: 133
Registrado em: 02 Mai 2016, 18:06

Re: Contar apenas Dias Uteis !!!

Mensagempor leandroandrea07 » 06 Set 2016, 16:30

Avelino,

funcionando perfeitamente.


Mais um tópico resolvido.


Obrigado a todos.

leandroandrea07
Mensagens: 133
Registrado em: 02 Mai 2016, 18:06

Re: Contar apenas Dias Uteis !!!

Mensagempor leandroandrea07 » 19 Out 2016, 13:45

Avelino Sampaio escreveu:Leandro,

para consulta a tabela de dias não úteis, basta utilizar a função dcount(). Algo assim:

Código:
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


Aguardamos




Bom dia Avelino,

seria possível alterar a função acima, para que o resultado fosse retornado em "DATA" ?



Grato

Avatar do usuário
Avelino Sampaio
Mensagens: 2160
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: [resolvido] Contar apenas Dias Uteis !!!

Mensagempor Avelino Sampaio » 19 Out 2016, 13:52

Leandro,

desculpa mas não entendi ? Explique de outra forma.

Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

leandroandrea07
Mensagens: 133
Registrado em: 02 Mai 2016, 18:06

Re: [resolvido] Contar apenas Dias Uteis !!!

Mensagempor leandroandrea07 » 19 Out 2016, 14:07

Por exemplo Avelino,

Envio uma NF para uma filial hoje, e o prazo é de 5 dias uteis para devolução.
Imaginemos que amanha é um dia "não útil" (fechado para inventario por exemplo - e já tenho a tabela de dias "não Uteis"), o prazo para devolução seria
27/10/2016.

Imagine que enviei uma NF no dia 03/10/2016 e deveria ter recebido a devolução em no máximo 5 dias uteis.
A função retorna o resultado, em números, ou seja, o total de dias que se passaram do dia 03/10/2016 ate hoje.

Seria possível que ela retornasse em qual data o prazo se expirou ?



Grato

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.



Voltar para “Consultas”

Quem está online

Usuários neste fórum: Bing [Bot] e 2 visitantes