Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

dias habiles entre dos fechas

389 views
Skip to first unread message

moises gutierrez espinosa

unread,
May 14, 2003, 3:56:21 PM5/14/03
to
Quisiera saber si es posible, contar el numero de dias
habiles entre dos fechas

Jesus

unread,
May 14, 2003, 4:46:05 PM5/14/03
to
Hola.
Algo muy parecido es lo que estoy intentando hacer dos hilos mas abajo.
Ya te contare o me contaras tu si adivinas algo.
Un saludo

"moises gutierrez espinosa" <ses...@hotmail.com> escribió en el mensaje
news:01c701c31a52$e4083750$a601...@phx.gbl...

E. Feijoo

unread,
May 14, 2003, 5:50:55 PM5/14/03
to
Valdría esto?

Public Function DiasHabiles(Fecha1 As Date, Fecha2 As Date) As Long
Fecha1 = DateValue(Fecha1)
Fecha2 = DateValue(Fecha2)
Do
If Fecha1 >= Fecha2 Then Exit Do
If Weekday(Fecha1, vbMonday) < 6 Then DiasHabiles = DiasHabiles + 1
Fecha1 = Fecha1 + 1
Loop
End Function

Un saludo E. Feijoo

"Jesus" <f2j...@hotmail.com> escribió en el mensaje news:OazFqnlG...@tk2msftngp13.phx.gbl...

Iñaki Hualde

unread,
May 15, 2003, 4:00:38 AM5/15/03
to
En ese caso no contemplas los festivos, para ello dbes crear una tabla en la
que introduces los festivos y antes de pasar por de recorrer el bucle
descartar que es festivo
Public Function DiasLaborables( _
ByVal FechaDesde As Date, _
ByVal FechaHasta As Date) _
As Long

Dim datAuxiliar As Date
Dim lngDiaSemana As Long
Dim lngDias As Long

If FechaHasta < FechaDesde Then
datAuxiliar = FechaDesde
FechaDesde = FechaHasta
FechaHasta = datAuxiliar
End If

For datAuxiliar = FechaDesde To FechaHasta
lngDiaSemana = DatePart( _
"w", _
datAuxiliar, _
vbMonday)
'vbMonday considera el lunes como día Nº 1
Select Case lngDiaSemana
Case 1 To 6 'lunes a Sabado
If EsDiaLaboral(datAuxiliar) Then
lngDias = lngDias + 1
End If
End Select
Next datAuxiliar

DiasLaborables = lngDias
End Function

Public Function EsDiaLaboral( _
ByVal Dia As Date) _
As Boolean
Dim strFecha As String
Dim varPrueba As Variant

strFecha = "#" _
& CStr(Month(Dia)) _
& "/" _
& CStr(Day(Dia)) _
& "/" _
& CStr(Year(Dia)) _
& "#"

varPrueba = fLookup("Fecha", "Fiestas", "[Fecha] =" _
& strFecha)
'Si encuentra la fecha en la tabla devuelve esa fecha
'que se asigna a la variable varPrueba
'Si no existe la fecha varPrueba valdrá Null

'IsNull devuelve True o False
EsDiaLaboral = IsNull(varPrueba)
End Function

Saludos Iñaki

--
Para responder hua...@retena.com
"E. Feijoo" <e.feijoo()retemail.es> escribió en el mensaje
news:eMDulLmG...@TK2MSFTNGP11.phx.gbl...

Eduardo Olaz

unread,
May 15, 2003, 8:28:15 AM5/15/03
to
Hola Iñaki:
Las funciones que propones funcionan correctamente, pero tal y como están
consideran el sábado como laborable, como así es en algunos sectores como el
comercio y la limpieza.
Por ello, para las empresas que trabajen de lunes a viernes, hay que cambiar
la línea:

Case 1 To 6 'lunes a sábado
por
Case 1 To 5 'lunes a viernes

Saludos desde la calle Estafeta de Pamplona

Eduardo Olaz
Microsoft [MVP] Access

edu...@olaz.net

"Iñaki Hualde" <hua...@retena.com> escribió en el mensaje
news:eWZMyerG...@tk2msftngp13.phx.gbl...

E. Feijoo

unread,
May 15, 2003, 3:30:16 PM5/15/03
to
Métodos hay tantos como programadores, yo por ejemplo he decidido descartar al sábado como laborable ¿ es una ilusión?.
Si deseara descontar los días festivos, no haría una comparación día a día para saber si es o no festivo, lo consideraría una perdida de efectividad
Bastaría ( en una tabla con los días festivos 'laborables' ) ordenada por fecha, antes de salir de la cuenta de los laborables, abrir la tabla, localizar el primero que sea igual o mayor a la fecha inicio y recorrer con un bucle la tabla, salir si la fecha siguiente es mayor que la final, en otro caso descontar uno de los laborables.

¿ Intentamos optimizarla y que la pongan en la pagina 'oficial' ?

La condición a cumplir seria que fuese utilizable en cualquier version.. o crear una por version.

Un saludo E. Feijoo

"Iñaki Hualde" <hua...@retena.com> escribió en el mensaje news:eWZMyerG...@tk2msftngp13.phx.gbl...

Chea

unread,
May 15, 2003, 5:25:49 PM5/15/03
to
Yo tenía hecha una rutina para sumar días hábiles que trabajaba comprobando
los festivos en un bucle y se me ocurrió que se podía plantear utilizando
funciones de access que los contaran: datediff() para los domingos y
dcount() para las fiestas. Comparé ambas y resultó ser más rápida la
segunda. Creo que el planteamiento sería igual para el cálculo de hábiles
entre fechas.

--
Saludos.

José Bengoechea [MS-MVP]
http://usuarios.lycos.es/jbchea/


"E. Feijoo" <e.feijoo()retemail.es> escribió en el mensaje

news:#Hr8$pxGDH...@TK2MSFTNGP11.phx.gbl...

Iñaki Hualde

unread,
May 15, 2003, 5:40:56 PM5/15/03
to
! Hombre que si funcionan, como que son tuyas !

Saludos

--
Para responder hua...@retena.com
"Eduardo Olaz" <edu...@olaz.net> escribió en el mensaje
news:e7Y$7XuGDH...@TK2MSFTNGP11.phx.gbl...

eper...@gmail.com

unread,
Jun 18, 2015, 10:06:28 AM6/18/15
to
El miércoles, 14 de mayo de 2003, 14:58:07 (UTC-5), moises gutierrez espinosa escribió:
> Quisiera saber si es posible, contar el numero de dias
> habiles entre dos fechas

Descargar y estudiar el manual con los ejemplos en Access y Excel del siguiente link:

https://mega.nz/#!7IMGxSxB!y2e8Ykbiw4iN5kUTyvxLsUACzF5rZXJrrDLQQHzI3TM
0 new messages