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

Cálculo de días entre fechas, excluyendo sábados, domingos o festi

2,145 views
Skip to first unread message

Marcela

unread,
Jan 4, 2007, 11:01:01 AM1/4/07
to
Hola,
Utilizo una base de datos en el trabajo, para almacenar y comprobar los días
de permiso y las vacaciones que disfrutamos, pero como son 22 días hábiles,
necesito saber si hay alguna posibilidad de que Access me calcule los días
transcurridos entre dos fechas, sin tener en cuenta los sábados, domingos o
festivos.
Muchas gracias

CarCar

unread,
Jan 4, 2007, 11:12:46 AM1/4/07
to
Hola:

No, pues los días festivos varían dependiendo del lugar, deberás
crearte una tabla con dichos días festivos y a la función que tiene
Access para calcular días naturales entre dos fecha "DateDiff",
restarles los días que, dentro del periodo a considerar, estén en
dicha tabla y también los sábados y domingos mira la ayuda de dicha
función y quizás también la de Weekday.

Saludos,
CarCar

Marcela ha escrito:

CarCar

unread,
Jan 4, 2007, 11:22:14 AM1/4/07
to
Hola:

Acabo de encontrar una función realizada por Taribo, que calcula los
días hábiles, pero no tiene en cuenta los días festivos, aunque se
podría retocar:

Public Function DiasHabilesFechas(FechaInicio As Date, FechaFin As
Date) As Long
Dim DiasNoSabadosNoDomingos As Long
Do Until FechaInicio > FechaFin
If Weekday(FechaInicio) <> 1 And Weekday(FechaInicio) <> 7 Then
DiasNoSabadosNoDomingos = DiasNoSabadosNoDomingos + 1
End If
FechaInicio = FechaInicio + 1
Loop
DiasHabilesFechas = DiasNoSabadosNoDomingos
End Function

Si tuviéramos una tabla llamada "TbFestivos" con un campo llamado
"Fecha" que tuviera los días que son festivos, la función quedaría
así:

Public Function DiasHabilesFechas(FechaInicio As Date, FechaFin As
Date) As Long
Dim DiasNoSabadosNoDomingos As Long
Do Until FechaInicio > FechaFin
If Weekday(FechaInicio) <> 1 And Weekday(FechaInicio) <> 7 Then
If IsNull(DLookup("Fecha","TbFestivos","Fecha=#" &
Format(FechaInicio,'mm/dd/yyyy') & "#")) Then
DiasNoSabadosNoDomingos = DiasNoSabadosNoDomingos + 1
End If
End If
FechaInicio = FechaInicio + 1
Loop
DiasHabilesFechas = DiasNoSabadosNoDomingos
End Function

Saludos,
CarCar

Marcela ha escrito:

> Hola,

Chea

unread,
Jan 4, 2007, 11:39:14 AM1/4/07
to
Esta función sí tiene en cuenta los festivos:
http://jbengoechea.com/laborables.htm


--
Saludos

José Bengoechea Ibaceta [MS-MVP Access]
http://jbengoechea.com/


"CarCar" <ccar...@hotmail.com> escribió en el mensaje
news:1167927734.5...@42g2000cwt.googlegroups.com...

CarCar

unread,
Jan 4, 2007, 12:31:25 PM1/4/07
to
Hola:

¡Correcto! y vista tu función me doy cuenta, de que en la mía, he
vuelto a cometer un error muy común en mí cuando escribo sin pasar
primero por Access, usar comillas simples en lugar de comillas dobles
en la función Format.

Pero tu función es "más mejor". :-)

Saludos,
CarCar

Chea ha escrito:

Marcela

unread,
Jan 4, 2007, 1:05:01 PM1/4/07
to
En efecto, ya lo he conseguido, un millón de gracias

Marcela

unread,
Jan 4, 2007, 1:05:00 PM1/4/07
to
¡Gracias mil!, a tí y a Chea, porque efectivamente es la función de
Bengoechea la que he conseguido que me funcione perfectamente. He tardado un
poco hasta quitar los [ del nombre de la tabla y poner los festivos, pero ya
está todo bien. Estoy contentísima, la de curro que me acabo de quitar
gracias a esto.
Feliz Año a todos y repito, muuuuuuuuuuuuchas gracias

"CarCar" wrote:


Eva

unread,
Jan 5, 2007, 3:10:16 AM1/5/07
to
No es por tocar las narices, sino por vagancia (no tengo tiempo para mirarla
más a fondo): ¿qué pasa con los festivos que caen en fin de semana?

:)

"Chea" <fo...@bengoecheaESTONO.net> escribió en el mensaje
news:OJ05i7BM...@TK2MSFTNGP06.phx.gbl...

CarCar

unread,
Jan 5, 2007, 3:39:13 AM1/5/07
to
Hola, Eva:

Se te nota falta de entrenamiento... esas fiestas...

No las incluyes en la tabla. :-)

Saludos,
CarCar


Eva ha escrito:

Eva

unread,
Jan 5, 2007, 3:50:58 AM1/5/07
to
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm..............

Pos ya no me gusta :( Y ti vi a contar por qué: mantenimiento de la tabla
año tras año, a mí me gustaría poder copiar todos los registros de mi tabla
de festivos y cambiar la fecha a los que procedan (Semana Santa,
Asunción...) dejando el resto igual. Porque tú imagínate que generas la
tabla de festivos para este año, que es un desastre y todos caen en finde, y
el año que viene te toca volver a escribirlos. Y bueno, si solo mantienes
una tabla de festivos ni tan mal, pero si curras con varias
poblaciones/provincias/comunidades/paises, tendrás que tener varias tablas
(o campo diferenciador) y menudo jaleo que se te monta todos los años.

Sugerencia: Dejar la tablita de festivos con tooooodos los festivos y
eliminar (bien en el momento de la actualización de la fecha del festivo,
mediante campito ad hoc, o bien en el momento del cálculo) aquellos que caen
en finde (contando o no el sábado).

:)

"CarCar" <ccar...@hotmail.com> escribió en el mensaje

news:1167986353.1...@s80g2000cwa.googlegroups.com...

CarCar

unread,
Jan 5, 2007, 4:06:23 AM1/5/07
to
Hola:

Tiene usted razón, si necesitas diferentes calendarios de días
hábiles, necesitaras que tu tabla de festivos contemple la población
o la comunidad o algo que haga referencia al "tipo de calendario". La
tabla podría tener un campo adicional que indicase si la "fiesta" en
realidad es o no día hábil (por no caer en sábado o domingo) y la
función anterior comprobar si en realidad es fiesta o no.

El formulario que mantuviese la tabla de festivos, podría hacerlo
automáticamente utilizando la función Weekday.

Feliz año,
CarCar

Eva ha escrito:

Emilio

unread,
Jan 5, 2007, 4:21:20 AM1/5/07
to
--------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
--------------------------------------------------------------------------
Hola!

Simplemente con descontar de la cuenta de festivos aquellos que sean domingo
(ya sabéis weekday=vbSunday) y listo.

Saludos a tod@s
Emilio [MS-MVP Access 2006/7]
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro
http://www.mvp-access.com/emilio


"CarCar" <ccar...@hotmail.com> escribió en el mensaje

news:1167987983.3...@38g2000cwa.googlegroups.com...

Eva

unread,
Jan 5, 2007, 4:24:30 AM1/5/07
to
Qué bien me has entendido :))))))

"CarCar" <ccar...@hotmail.com> escribió en el mensaje

news:1167987983.3...@38g2000cwa.googlegroups.com...

0 new messages