El problema de esos cálculos es definir que se entiende por, por ejemplo, ¿Cuántos días hay entre una fecha y otra fecha?. ¿Se cuenta la fecha inicial, ya que el día no termina hasta las 23:59:59,999999..., y no se cuenta la final?. ¿No se cuenta el día inicial y si se cuenta el final? ¿Se cuentan ambos.? ¿No se cuenta ninguno?
Por ejemplo, si tengo una tabla donde están los festivos y construyo un formulario
Cuando pulso Enter
Lo cual es cierto, quizá no valido, ya que "cuenta", el 5 que todavía no ha terminado, el 9 y el 10.
El código del evento Despues de actualizar del cuadro de texto Dias, en este caso es
Dim c As Integer, NoLaborables As Integer, Festivos As Integer
For c = 1 To Dias
If Format(FechaInicial + c, "dddd") = "domingo" Or Format(FechaInicial + c, "dddd") = "sábado" Then
NoLaborables = Nz([NoLaborables], 0) + 1
ElseIf DCount("*", "festivos", "festivo=#" & Me.FechaInicial & "# + " & c & "") Then
Festivos = Nz([Festivos], 0) + 1
End If
Next
FechaFinal = FechaInicial + Dias + NoLaborables + Festivos
If Format(FechaFinal, "dddd") = "Sábado" Then
FechaFinal = FechaFinal + 2
ElseIf Format(FechaFinal, "dddd") = "Domingo" Then
FechaFinal = FechaFinal + 1
End If
Por eso, sería conveniente que fijaras que días quieres que se tengan en cuenta.
Por cierto, no lo sé pero dudo que puedas hacerlo en SQL.