Equivalente da função NETWORKDAYS do Excel com o Jet ADO

3

Existe uma maneira de replicar o NETWORKDAYS do Excel ao se conectar a um banco de dados Jet via ADO?

    
por Lunatik 04.09.2009 / 15:00

2 respostas

5

Primeiro, presumindo que sabemos que o início e o fim são dias da semana, acho que isso funciona:

([DateEnd]-([DateStart]+(Weekday([DateEnd])-Weekday([DateStart]))))/7*5+(Weekday([DateEnd])-Weekday([DateStart]))+1
  • calcule o número de semanas entre as datas e os horários em 5.
  • adiciona diferença do dia da semana
  • adicione um para incluir início e fim

Se você não sabe que ambos são dias de trabalho, você precisa de uma correção. Eu acho que isso está correto:

([DateEnd]-([DateStart]+(Weekday([DateEnd])-Weekday([DateStart]))))/7*5+(Weekday([DateEnd])-Weekday([DateStart]))+1+IIf(Weekday([DateEnd])=7,-1,0)+IIf(Weekday([DateStart])=1,-1,0)

Eu testei no Excel e parece dar a resposta correta

    
por 16.09.2009 / 10:14
0

Há também esta função . É algoritmicamente quase idêntico ao de @ JDunkerley - apenas mais detalhado. Possivelmente mais fácil de implementar em diferentes ambientes.

    
por 16.09.2009 / 17:34