Evitar fines de semana en una secuencia de planificación

Quería discriminar los fines de semana en una secuencia de producción. Las variables son Integer excepto acumFin que es double que acumula horas. Si detecta un sábado a la variable finProd le suma un 1 y si es domingo le suma un 2. Pero no termina de sumar bien las horas y los días, creo que no estoy usando bien la función DateAdd.

FinSin_Sab_Dom = DateAdd("n", acumFin * 60, Now)

finWeekend = Weekday(DateAdd("n", acumFin * 60, Now + sabado + domingo))

Select Case finWeekend
Case Is = nSab
sabado = 2 + sabado
bF_Weekend = True
Case Is = nDom
domingo = 1 + domingo
bF_Weekend = True
End Select

finProd = DateAdd("n", acumFin * 60, Now + sabado + domingo)

Respuesta
1

H0la Juan:

Para comenzar, dices que si encuentras un sábado le sumas 1 y 2 si es domingo, pero, si no estoy entendiendo mal tu código, lo estás haciendo al revez, 2 para el sabado y 1 para el domingo.

Lo otro: Si dices Now + sabado + domingo, y suponiendo que domingo=2, el resultado sería la fecha de hoy mas dos días ¿Es eso lo que realmente quieres?

Finalmente, con el DateAdd le estás sumando una cantidad "acumFin * 60" de minutos.

Entonces, si Now = 15/03/2019 10:00, sabado = 0, domingo = 2 y acumFin = 20; según la formula que tienes, el resultado sería 18/03/2019 06:00 ¿Es este el resultado que debiera dar?.

Dime si algo te hace ruido dentro del analisis.

S@ludos.

Disculpa me exprese mal en el comentario sábado vale 2 y domingo 1 (si podéis rectificar mi comentario).  incorporo los valores a la función y el resultado

finProd = DateAdd("n", acumFin  =41horas * 60, Now = 15/03/19 21:30:00 + sabado =0+ domingo=1)

finProd= debería  terminar (aprox) el martes  19-03-19 por la tarde. y tal y como lo tengo termina el lunes 18-03-19. Es como que el domingo que vale 1 no me lo suma a now

Acumulado => 41 horas = 1 día y 17 horas

Residuos => 17 horas + 21,5 = 1 día y 14,5 horas

15 de la fecha + 1 del domingo + 1 de los acumulados + 1 de la suma de los residuos = 18

Resultado 18-03-2019 14:30

Creo que el resultado que te está dando es el correcto.

Dime si tengo algún error en el cálculo.

S@lu2

Muchísimas gracias por tu precisión. Si no me equivoco al decir que domingo vale 1, el sábado me lo estaría contando como un día productivo. Para que me contara el fin de semana como festivo debería indicar que domingo es =2 y así  finProd terminaría la producción el 19-03-2019.

Muchas gracias por haberme dado la solución con un cálculo tan preciso. 

Entonces lo damos por resulto.

S@lu2

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas