(demasiado antiguo para responder)
Contar días hábiles en un rango de fechas
Patty
2005-03-30 21:30:11 UTC
Hola amigos,

Creo que ttengo un problema con rangos de fecha, necesito sacar en una
consulta o formulario de acces 2000 los dias hábiles o naturales
(Lunes,Martes, Miércoles,Jueves,Viernes) la diferencia de días
por ejemplo 1-Feb-2005 al 31-mar-05 quiero saber cuantos dias hábiles han
transcurrido (42 dias), es decir sin contar los dias Sábado y Domingo. Esto
se puede hacer en access 2000.


Saludos...
patty
Emilio
2005-03-30 21:59:27 UTC
--------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
--------------------------------------------------------------------------
Hola Patty!
Solo tienes que recorrer el rango de fechas, de uno en uno, contando
aquellos cuyo weekday no sea vbSunday ni vbSaturday

Saludos a ***@s desde Huelva
Emilio
miliuco56 ALGARROBA hotmail.com

http://www.mvp-access.com/foro
http://www.mvp-access.com/emilio

Reglas de conducta de los grupos de noticias:
http://support.microsoft.com/default.aspx?scid=fh;ES-ES;newsreglas
Post by Patty
Hola amigos,
Creo que ttengo un problema con rangos de fecha, necesito sacar en una
consulta o formulario de acces 2000 los dias hábiles o naturales
(Lunes,Martes, Miércoles,Jueves,Viernes) la diferencia de días
por ejemplo 1-Feb-2005 al 31-mar-05 quiero saber cuantos dias hábiles han
transcurrido (42 dias), es decir sin contar los dias Sábado y Domingo. Esto
se puede hacer en access 2000.
Saludos...
patty
Battle Troll
2005-03-30 22:10:00 UTC
¡¡mi funcion!! ¡¡mi funcion!!
:'( buuu... el maestro emilio olvido mi funcion...

esta funcioncilla da el num. de dias habiles en un mes, es una variacion
de una que postee en el foro del buho hace algun tiempo.
Me gustaria algun dia hacer una comparacion, si sera mas rapido recorrer
en un
"for" los dias implicados e ir sumando los habiles a mi funcion, nunca he
hecho
pruebas... pero creo que fue un muy interesante ejercicio de programacion
;-)

saludos desde mexico!!!
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Public Function DiasHabilesMes&(FechaMes As Date)
Dim NumeroMes as long, NumeroAnho as long
Dim FechaIni As Date, FechaFin As Date
Dim FechaTemp As Date, FechaTemp2 As Date
Dim DiaSemanaFechaTemp as long, DiaSemanaFechaFin as long, ConsultaSQL
as string

Dim DiasAjuste as long

On Error GoTo DiasHabilesMes_Error

NumeroMes = Month(FechaMes)
NumeroAnho = Year(FechaMes)

FechaIni = CDate(CStr(NumeroAnho) & "-" & CStr(NumeroMes) & "-1")
FechaFin = DateAdd("m", 1, FechaIni) - 1

'Calculamos la fecha en que acabo la ultima semana, empezando a contar
'las semanas desde el dia primero de cada mes
FechaTemp = FechaIni + 27
FechaTemp2 = FechaFin

'primero vemos si la fecha temporal es diferente del fin de mes (para
evitar
'trabajar sobre febrero de los años no bisiestos)
If FechaTemp <> FechaFin Then
'agregamos un dia de compensacion para contar
'tambien el ultimo dia del mes
DiasAjuste = 1

'primero vemos si el dia 28 y el ultimo del mes estan en la misma
semana
'Datepart regresa: Dom=1, Sab=7
DiaSemanaFechaTemp = DatePart("w", FechaTemp)
DiaSemanaFechaFin = DatePart("w", FechaFin)

'si el dia de la semana de "temp" es mayor que el del ultimo dia
del mes,
'es que estan en semanas diferentes
If DiaSemanaFechaTemp > DiaSemanaFechaFin Then
'vemos si el ultimo dia del mes es domingo, entonces
retrocedemos hasta
'el viernes de la semana pasada y quitamos un dia de ajuste
If DiaSemanaFechaFin = 1 Then
DiasAjuste = 0
FechaTemp2 = FechaTemp2 - 2
'si el 28 tambien cayo en fin de semana y tambien
regresamos hasta
'el ultimo viernes
If DiaSemanaFechaTemp = 7 Then
FechaTemp = FechaTemp - 1
End If
Else
'el ultimo dia del mes es habil, comprobamos que el 28 de
ese mes haya sido
'habil. si lo fue agregamos tantos dias de compensacion
como dias
'haya desde FechaTemp hasta el ultimo viernes de la semana
del 28 y luego
'adelantamos hasta el lunes de la sig. semana
If DiaSemanaFechaTemp < 7 Then
DiasAjuste = DiasAjuste + (6 - DiaSemanaFechaTemp)
FechaTemp = FechaTemp + (9 - DiaSemanaFechaTemp)
Else
'si no fue habil entonces adelantamos la fechatemp
hasta el siguiente lunes
FechaTemp = FechaTemp + 2
End If
End If
Else
'estan en la misma semana
DiasAjuste = 0
If DiaSemanaFechaTemp = 1 Then
'si fechatemp (hasta este momento, el 28 del mes) cayo en
domingo, lo movemos
'hasta el lunes siguiente
DiasAjuste = 1
FechaTemp = FechaTemp + 1
ElseIf DiaSemanaFechaFin = 7 Then
'si el fin del mes cayo en sabado, lo retrocedemos hasta el
ultimo viernes
'y quitamos un dia de ajuste
FechaTemp2 = FechaTemp2 - 1
End If
End If
End If

DiasHabilesMes = DiasHabilesMes + 20 + DateDiff("d", FechaTemp,
FechaTemp2) + DiasAjuste

On Error GoTo 0
Exit Function

DiasHabilesMes_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in
procedure DiasHabilesMes of Módulo DiasHabilesPorMes"
Resume Next
End Function
Chea
2005-03-31 13:54:01 UTC
¡Y la mía! ¡Y la mía! :-)

Habiles = (FechaFin - fechaInicio) - (DateDiff("ww", fechaInicio, FechaFin,
vbSunday) _
+ DateDiff("ww", fechaInicio, FechaFin, vbSaturday))


Juan M. Afán la desarrolla en su página teniendo en cuenta, además, una
tabla de festivos: http://tinyurl.com/6hbqr
--
Saludos.

José Bengoechea Ibaceta [MS-MVP Access]
http://perso.wanadoo.es/j.bchea
Post by Battle Troll
¡¡mi funcion!! ¡¡mi funcion!!
:'( buuu... el maestro emilio olvido mi funcion...
esta funcioncilla da el num. de dias habiles en un mes, es una variacion
de una que postee en el foro del buho hace algun tiempo.
Me gustaria algun dia hacer una comparacion, si sera mas rapido recorrer
en un
"for" los dias implicados e ir sumando los habiles a mi funcion, nunca he
hecho
pruebas... pero creo que fue un muy interesante ejercicio de programacion
;-)
saludos desde mexico!!!
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Public Function DiasHabilesMes&(FechaMes As Date)
Dim NumeroMes as long, NumeroAnho as long
Dim FechaIni As Date, FechaFin As Date
Dim FechaTemp As Date, FechaTemp2 As Date
Dim DiaSemanaFechaTemp as long, DiaSemanaFechaFin as long, ConsultaSQL
as string
Dim DiasAjuste as long
On Error GoTo DiasHabilesMes_Error
NumeroMes = Month(FechaMes)
NumeroAnho = Year(FechaMes)
FechaIni = CDate(CStr(NumeroAnho) & "-" & CStr(NumeroMes) & "-1")
FechaFin = DateAdd("m", 1, FechaIni) - 1
'Calculamos la fecha en que acabo la ultima semana, empezando a contar
'las semanas desde el dia primero de cada mes
FechaTemp = FechaIni + 27
FechaTemp2 = FechaFin
'primero vemos si la fecha temporal es diferente del fin de mes (para
evitar
'trabajar sobre febrero de los años no bisiestos)
If FechaTemp <> FechaFin Then
'agregamos un dia de compensacion para contar
'tambien el ultimo dia del mes
DiasAjuste = 1
'primero vemos si el dia 28 y el ultimo del mes estan en la misma
semana
'Datepart regresa: Dom=1, Sab=7
DiaSemanaFechaTemp = DatePart("w", FechaTemp)
DiaSemanaFechaFin = DatePart("w", FechaFin)
'si el dia de la semana de "temp" es mayor que el del ultimo dia
del mes,
'es que estan en semanas diferentes
If DiaSemanaFechaTemp > DiaSemanaFechaFin Then
'vemos si el ultimo dia del mes es domingo, entonces
retrocedemos hasta
'el viernes de la semana pasada y quitamos un dia de ajuste
If DiaSemanaFechaFin = 1 Then
DiasAjuste = 0
FechaTemp2 = FechaTemp2 - 2
'si el 28 tambien cayo en fin de semana y tambien
regresamos hasta
'el ultimo viernes
If DiaSemanaFechaTemp = 7 Then
FechaTemp = FechaTemp - 1
End If
Else
'el ultimo dia del mes es habil, comprobamos que el 28 de
ese mes haya sido
'habil. si lo fue agregamos tantos dias de compensacion
como dias
'haya desde FechaTemp hasta el ultimo viernes de la semana
del 28 y luego
'adelantamos hasta el lunes de la sig. semana
If DiaSemanaFechaTemp < 7 Then
DiasAjuste = DiasAjuste + (6 - DiaSemanaFechaTemp)
FechaTemp = FechaTemp + (9 - DiaSemanaFechaTemp)
Else
'si no fue habil entonces adelantamos la fechatemp
hasta el siguiente lunes
FechaTemp = FechaTemp + 2
End If
End If
Else
'estan en la misma semana
DiasAjuste = 0
If DiaSemanaFechaTemp = 1 Then
'si fechatemp (hasta este momento, el 28 del mes) cayo en
domingo, lo movemos
'hasta el lunes siguiente
DiasAjuste = 1
FechaTemp = FechaTemp + 1
ElseIf DiaSemanaFechaFin = 7 Then
'si el fin del mes cayo en sabado, lo retrocedemos hasta el
ultimo viernes
'y quitamos un dia de ajuste
FechaTemp2 = FechaTemp2 - 1
End If
End If
End If
DiasHabilesMes = DiasHabilesMes + 20 + DateDiff("d", FechaTemp,
FechaTemp2) + DiasAjuste
On Error GoTo 0
Exit Function
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in
procedure DiasHabilesMes of Módulo DiasHabilesPorMes"
Resume Next
End Function
Battle Troll
2005-03-31 19:02:33 UTC
¡¡ajale!! ¿tan simple y ya funciona?
chea, si no es mucha molestia, ¿podrias explicar como funciona, por favor?
Post by Chea
¡Y la mía! ¡Y la mía! :-)
Habiles = (FechaFin - fechaInicio) - (DateDiff("ww", fechaInicio, FechaFin,
vbSunday) _
+ DateDiff("ww", fechaInicio, FechaFin, vbSaturday))
Juan M. Afán la desarrolla en su página teniendo en cuenta, además, una
tabla de festivos: http://tinyurl.com/6hbqr
--
Don't tell anyone I'm free...
Patty
2005-03-31 18:59:58 UTC
Muchas gracias a todos,
ya quedo y lo hice de la siguente forma

Habiles = DateDiff("a", fechaInicio, FechaFin)-
(DateDiff("ww", fechaInicio, FechaFin, vbSunday) _
+ DateDiff("ww", fechaInicio, FechaFin, vbSaturday))
Post by Chea
¡Y la mía! ¡Y la mía! :-)
Habiles = (FechaFin - fechaInicio) - (DateDiff("ww", fechaInicio, FechaFin,
vbSunday) _
+ DateDiff("ww", fechaInicio, FechaFin, vbSaturday))
Juan M. Afán la desarrolla en su página teniendo en cuenta, además, una
tabla de festivos: http://tinyurl.com/6hbqr
--
Saludos.
José Bengoechea Ibaceta [MS-MVP Access]
http://perso.wanadoo.es/j.bchea
Post by Battle Troll
¡¡mi funcion!! ¡¡mi funcion!!
:'( buuu... el maestro emilio olvido mi funcion...
esta funcioncilla da el num. de dias habiles en un mes, es una variacion
de una que postee en el foro del buho hace algun tiempo.
Me gustaria algun dia hacer una comparacion, si sera mas rapido recorrer
en un
"for" los dias implicados e ir sumando los habiles a mi funcion, nunca he
hecho
pruebas... pero creo que fue un muy interesante ejercicio de
programacion
Post by Chea
Post by Battle Troll
;-)
saludos desde mexico!!!
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Public Function DiasHabilesMes&(FechaMes As Date)
Dim NumeroMes as long, NumeroAnho as long
Dim FechaIni As Date, FechaFin As Date
Dim FechaTemp As Date, FechaTemp2 As Date
Dim DiaSemanaFechaTemp as long, DiaSemanaFechaFin as long, ConsultaSQL
as string
Dim DiasAjuste as long
On Error GoTo DiasHabilesMes_Error
NumeroMes = Month(FechaMes)
NumeroAnho = Year(FechaMes)
FechaIni = CDate(CStr(NumeroAnho) & "-" & CStr(NumeroMes) & "-1")
FechaFin = DateAdd("m", 1, FechaIni) - 1
'Calculamos la fecha en que acabo la ultima semana, empezando a contar
'las semanas desde el dia primero de cada mes
FechaTemp = FechaIni + 27
FechaTemp2 = FechaFin
'primero vemos si la fecha temporal es diferente del fin de mes (para
evitar
'trabajar sobre febrero de los años no bisiestos)
If FechaTemp <> FechaFin Then
'agregamos un dia de compensacion para contar
'tambien el ultimo dia del mes
DiasAjuste = 1
'primero vemos si el dia 28 y el ultimo del mes estan en la misma
semana
'Datepart regresa: Dom=1, Sab=7
DiaSemanaFechaTemp = DatePart("w", FechaTemp)
DiaSemanaFechaFin = DatePart("w", FechaFin)
'si el dia de la semana de "temp" es mayor que el del ultimo dia
del mes,
'es que estan en semanas diferentes
If DiaSemanaFechaTemp > DiaSemanaFechaFin Then
'vemos si el ultimo dia del mes es domingo, entonces
retrocedemos hasta
'el viernes de la semana pasada y quitamos un dia de ajuste
If DiaSemanaFechaFin = 1 Then
DiasAjuste = 0
FechaTemp2 = FechaTemp2 - 2
'si el 28 tambien cayo en fin de semana y tambien
regresamos hasta
'el ultimo viernes
If DiaSemanaFechaTemp = 7 Then
FechaTemp = FechaTemp - 1
End If
Else
'el ultimo dia del mes es habil, comprobamos que el 28 de
ese mes haya sido
'habil. si lo fue agregamos tantos dias de compensacion
como dias
'haya desde FechaTemp hasta el ultimo viernes de la semana
del 28 y luego
'adelantamos hasta el lunes de la sig. semana
If DiaSemanaFechaTemp < 7 Then
DiasAjuste = DiasAjuste + (6 - DiaSemanaFechaTemp)
FechaTemp = FechaTemp + (9 - DiaSemanaFechaTemp)
Else
'si no fue habil entonces adelantamos la fechatemp
hasta el siguiente lunes
FechaTemp = FechaTemp + 2
End If
End If
Else
'estan en la misma semana
DiasAjuste = 0
If DiaSemanaFechaTemp = 1 Then
'si fechatemp (hasta este momento, el 28 del mes) cayo en
domingo, lo movemos
'hasta el lunes siguiente
DiasAjuste = 1
FechaTemp = FechaTemp + 1
ElseIf DiaSemanaFechaFin = 7 Then
'si el fin del mes cayo en sabado, lo retrocedemos hasta el
ultimo viernes
'y quitamos un dia de ajuste
FechaTemp2 = FechaTemp2 - 1
End If
End If
End If
DiasHabilesMes = DiasHabilesMes + 20 + DateDiff("d", FechaTemp,
FechaTemp2) + DiasAjuste
On Error GoTo 0
Exit Function
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in
procedure DiasHabilesMes of Módulo DiasHabilesPorMes"
Resume Next
End Function
Chea
2005-03-31 20:09:00 UTC
:-)
--
Saludos.

José Bengoechea Ibaceta [MS-MVP Access]
http://perso.wanadoo.es/j.bchea
Post by Patty
Muchas gracias a todos,
ya quedo y lo hice de la siguente forma
Habiles = DateDiff("a", fechaInicio, FechaFin)-
(DateDiff("ww", fechaInicio, FechaFin, vbSunday) _
+ DateDiff("ww", fechaInicio, FechaFin, vbSaturday))
Post by Chea
¡Y la mía! ¡Y la mía! :-)
Habiles = (FechaFin - fechaInicio) - (DateDiff("ww", fechaInicio,
FechaFin,
Post by Chea
vbSunday) _
+ DateDiff("ww", fechaInicio, FechaFin, vbSaturday))
Juan M. Afán la desarrolla en su página teniendo en cuenta, además, una
tabla de festivos: http://tinyurl.com/6hbqr
--
Saludos.
José Bengoechea Ibaceta [MS-MVP Access]
http://perso.wanadoo.es/j.bchea
Post by Battle Troll
¡¡mi funcion!! ¡¡mi funcion!!
:'( buuu... el maestro emilio olvido mi funcion...
esta funcioncilla da el num. de dias habiles en un mes, es una variacion
de una que postee en el foro del buho hace algun tiempo.
Me gustaria algun dia hacer una comparacion, si sera mas rapido recorrer
en un
"for" los dias implicados e ir sumando los habiles a mi funcion, nunca
he
Post by Chea
Post by Battle Troll
hecho
pruebas... pero creo que fue un muy interesante ejercicio de
programacion
Post by Chea
Post by Battle Troll
;-)
saludos desde mexico!!!
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Public Function DiasHabilesMes&(FechaMes As Date)
Dim NumeroMes as long, NumeroAnho as long
Dim FechaIni As Date, FechaFin As Date
Dim FechaTemp As Date, FechaTemp2 As Date
Dim DiaSemanaFechaTemp as long, DiaSemanaFechaFin as long,
ConsultaSQL
Post by Chea
Post by Battle Troll
as string
Dim DiasAjuste as long
On Error GoTo DiasHabilesMes_Error
NumeroMes = Month(FechaMes)
NumeroAnho = Year(FechaMes)
FechaIni = CDate(CStr(NumeroAnho) & "-" & CStr(NumeroMes) & "-1")
FechaFin = DateAdd("m", 1, FechaIni) - 1
'Calculamos la fecha en que acabo la ultima semana, empezando a
contar
Post by Chea
Post by Battle Troll
'las semanas desde el dia primero de cada mes
FechaTemp = FechaIni + 27
FechaTemp2 = FechaFin
'primero vemos si la fecha temporal es diferente del fin de mes
(para
Post by Chea
Post by Battle Troll
evitar
'trabajar sobre febrero de los años no bisiestos)
If FechaTemp <> FechaFin Then
'agregamos un dia de compensacion para contar
'tambien el ultimo dia del mes
DiasAjuste = 1
'primero vemos si el dia 28 y el ultimo del mes estan en la
misma
Post by Chea
Post by Battle Troll
semana
'Datepart regresa: Dom=1, Sab=7
DiaSemanaFechaTemp = DatePart("w", FechaTemp)
DiaSemanaFechaFin = DatePart("w", FechaFin)
'si el dia de la semana de "temp" es mayor que el del ultimo dia
del mes,
'es que estan en semanas diferentes
If DiaSemanaFechaTemp > DiaSemanaFechaFin Then
'vemos si el ultimo dia del mes es domingo, entonces
retrocedemos hasta
'el viernes de la semana pasada y quitamos un dia de ajuste
If DiaSemanaFechaFin = 1 Then
DiasAjuste = 0
FechaTemp2 = FechaTemp2 - 2
'si el 28 tambien cayo en fin de semana y tambien
regresamos hasta
'el ultimo viernes
If DiaSemanaFechaTemp = 7 Then
FechaTemp = FechaTemp - 1
End If
Else
'el ultimo dia del mes es habil, comprobamos que el 28 de
ese mes haya sido
'habil. si lo fue agregamos tantos dias de compensacion
como dias
'haya desde FechaTemp hasta el ultimo viernes de la
semana
Post by Chea
Post by Battle Troll
del 28 y luego
'adelantamos hasta el lunes de la sig. semana
If DiaSemanaFechaTemp < 7 Then
DiasAjuste = DiasAjuste + (6 - DiaSemanaFechaTemp)
FechaTemp = FechaTemp + (9 - DiaSemanaFechaTemp)
Else
'si no fue habil entonces adelantamos la fechatemp
hasta el siguiente lunes
FechaTemp = FechaTemp + 2
End If
End If
Else
'estan en la misma semana
DiasAjuste = 0
If DiaSemanaFechaTemp = 1 Then
'si fechatemp (hasta este momento, el 28 del mes) cayo en
domingo, lo movemos
'hasta el lunes siguiente
DiasAjuste = 1
FechaTemp = FechaTemp + 1
ElseIf DiaSemanaFechaFin = 7 Then
'si el fin del mes cayo en sabado, lo retrocedemos hasta
el
Post by Chea
Post by Battle Troll
ultimo viernes
'y quitamos un dia de ajuste
FechaTemp2 = FechaTemp2 - 1
End If
End If
End If
DiasHabilesMes = DiasHabilesMes + 20 + DateDiff("d", FechaTemp,
FechaTemp2) + DiasAjuste
On Error GoTo 0
Exit Function
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in
procedure DiasHabilesMes of Módulo DiasHabilesPorMes"
Resume Next
End Function
Chea
2005-03-31 20:14:14 UTC
Es fácil, Datediff nos puede calcular las semanas de diferencias entre dos
fechas y le podemos indicar en qué día de la semana empieza ésta. Si le
indicamos que la semana empieza en domingo entonces el número de semanas
coincidirá con el número de domingos entre las dos fechas, y si lo mismo
pasa con el sábado.

Es de suponer que, además, sea una función muy rápida con diferencias
grandes de fechas, pues no hace bucles y las semanas y los días de la semana
no necesitan más que unas pocas divisiones y restos para calcularse. Ya
sabes, las "cuatro reglas" ;-)
--
Saludos.

José Bengoechea Ibaceta [MS-MVP Access]
http://perso.wanadoo.es/j.bchea
Post by Battle Troll
¡¡ajale!! ¿tan simple y ya funciona?
chea, si no es mucha molestia, ¿podrias explicar como funciona, por favor?
Post by Chea
¡Y la mía! ¡Y la mía! :-)
Habiles = (FechaFin - fechaInicio) - (DateDiff("ww", fechaInicio, FechaFin,
vbSunday) _
+ DateDiff("ww", fechaInicio, FechaFin, vbSaturday))
Juan M. Afán la desarrolla en su página teniendo en cuenta, además, una
tabla de festivos: http://tinyurl.com/6hbqr
--
Don't tell anyone I'm free...
Patty
2005-03-31 22:55:07 UTC
Hola Chea,
para mi tu explicacion esta un poco confusa, yo que soy novata lo entiendo
de esta manera:
DateDiff("a", fechaInicio, FechaFin)
con este DateDiff calculo el número de dias que hay entre la fechaInicio y
la fechaFin
DateDiff("ww", fechaInicio, FechaFin, vbSunday)
despues calculo el número de domingos que hay entre la fechaInicio y la
fechaFin
DateDiff("ww", fechaInicio, FechaFin, vbSaturday)
luego calculo el número de sábados que hay entre la fechaInicio y la
fechaFin
y finalmente al número de días le restas los dias sabados y los domingos

bueno así lo entendi yo.. lo mas seguro es que no sea asi verdad. :-)

saludos...
patty
Post by Chea
Es fácil, Datediff nos puede calcular las semanas de diferencias entre dos
fechas y le podemos indicar en qué día de la semana empieza ésta. Si le
indicamos que la semana empieza en domingo entonces el número de semanas
coincidirá con el número de domingos entre las dos fechas, y si lo mismo
pasa con el sábado.
Es de suponer que, además, sea una función muy rápida con diferencias
grandes de fechas, pues no hace bucles y las semanas y los días de la semana
no necesitan más que unas pocas divisiones y restos para calcularse. Ya
sabes, las "cuatro reglas" ;-)
--
Saludos.
José Bengoechea Ibaceta [MS-MVP Access]
http://perso.wanadoo.es/j.bchea
Post by Battle Troll
¡¡ajale!! ¿tan simple y ya funciona?
chea, si no es mucha molestia, ¿podrias explicar como funciona, por favor?
En Thu, 31 Mar 2005 15:54:01 +0200, Chea
Post by Chea
¡Y la mía! ¡Y la mía! :-)
Habiles = (FechaFin - fechaInicio) - (DateDiff("ww", fechaInicio, FechaFin,
vbSunday) _
+ DateDiff("ww", fechaInicio, FechaFin,
vbSaturday))
Post by Chea
Post by Battle Troll
Post by Chea
Juan M. Afán la desarrolla en su página teniendo en cuenta, además, una
tabla de festivos: http://tinyurl.com/6hbqr
--
Don't tell anyone I'm free...
Chea
2005-04-01 22:48:55 UTC
Sí, claro que es así.

Lo que yo explico es que es lo mismo calcular el número de semanas que
empiezan en domingo que calcular el número de domingos y eso, que es tan
evidente, a veces se escapa al que está buscando una solución para los días
hábiles. Manías que tenemos de complicarnos la vida ;-)
--
Saludos.

José Bengoechea Ibaceta [MS-MVP Access]
http://perso.wanadoo.es/j.bchea
Post by Patty
Hola Chea,
para mi tu explicacion esta un poco confusa, yo que soy novata lo entiendo
DateDiff("a", fechaInicio, FechaFin)
con este DateDiff calculo el número de dias que hay entre la fechaInicio y
la fechaFin
DateDiff("ww", fechaInicio, FechaFin, vbSunday)
despues calculo el número de domingos que hay entre la fechaInicio y la
fechaFin
DateDiff("ww", fechaInicio, FechaFin, vbSaturday)
luego calculo el número de sábados que hay entre la fechaInicio y la
fechaFin
y finalmente al número de días le restas los dias sabados y los domingos
bueno así lo entendi yo.. lo mas seguro es que no sea asi verdad. :-)
saludos...
patty
Post by Chea
Es fácil, Datediff nos puede calcular las semanas de diferencias entre dos
fechas y le podemos indicar en qué día de la semana empieza ésta. Si le
indicamos que la semana empieza en domingo entonces el número de semanas
coincidirá con el número de domingos entre las dos fechas, y si lo mismo
pasa con el sábado.
Es de suponer que, además, sea una función muy rápida con diferencias
grandes de fechas, pues no hace bucles y las semanas y los días de la
semana
Post by Chea
no necesitan más que unas pocas divisiones y restos para calcularse. Ya
sabes, las "cuatro reglas" ;-)
--
Saludos.
José Bengoechea Ibaceta [MS-MVP Access]
http://perso.wanadoo.es/j.bchea
Post by Battle Troll
¡¡ajale!! ¿tan simple y ya funciona?
chea, si no es mucha molestia, ¿podrias explicar como funciona, por
favor?
Post by Chea
Post by Battle Troll
En Thu, 31 Mar 2005 15:54:01 +0200, Chea
Post by Chea
¡Y la mía! ¡Y la mía! :-)
Habiles = (FechaFin - fechaInicio) - (DateDiff("ww", fechaInicio, FechaFin,
vbSunday) _
+ DateDiff("ww", fechaInicio, FechaFin,
vbSaturday))
Post by Chea
Post by Battle Troll
Post by Chea
Juan M. Afán la desarrolla en su página teniendo en cuenta, además, una
tabla de festivos: http://tinyurl.com/6hbqr
--
Don't tell anyone I'm free...