** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Fechas y días de plazo
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoFechas y días de plazo

 Responder Responder Página  <12
Autor
Mensaje
maserrano Ver desplegable
Colaborador
Colaborador


Unido: 02/Abril/2014
Localización: España
Estado: Sin conexión
Puntos: 690
Enlace directo a este mensaje Enviado: 27/Mayo/2023 a las 19:39

Buenas. Llevo un rato intentando solucionarlo, hoy que tengo más tiempo, pero no doy con ello, la verdad. He llegado a dos caminos veamos,

·       - Por un lado, tengo un evento que me devuelve una fecha (final) una vez introducida una fecha inicial y un plazo de tiempo. Hasta aquí bien, pero no tiene en cuenta que sean días hábiles (o sea, ni sábados, ni domingos ni festivos). No sé crear una función que lo haga y la que he visto está preparada para solicitar dos fechas y devolver el plazo entre ambas, y no sé cómo adaptarla.

 ·       - Por otro lado, hay un ejemplo que sí tiene en cuenta el tema de los días hábiles; incluso puedo discriminar entre si quiero que cuenten los sábados y también los festivos. El “problema” es que este ejemplo pide dos fechas y calcula el plazo entre ambas y su función está adaptada a ello. Y, por más vueltas que le doy no consigo adaptarlo a que me devuelva la fecha, conocida la fecha inicial y el plazo.

 Por lo que la solución que tengo es adaptar mi trabajo a este último ejemplo, pues la variación es pequeña, cambiando el concepto de qué y cómo lo queremos.

Así pues, por mi parte se puede cerrar este hilo y dar gracias a todo el grupo. Salu2

Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
Enlace directo a este mensaje Enviado: 28/Mayo/2023 a las 00:32
Hola!

Mírate estos dos enlaces y podrás adaptarlos a tus necesidades.

https://www.fmsinc.com/microsoftaccess/modules/examples/AddWeekdays.asp

https://stackoverflow.com/questions/15271090/add-working-days-to-start-date-to-create-end-date-including-bank-holiday

Editado por mounir - 28/Mayo/2023 a las 00:35
Un Saludo.
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14732
Enlace directo a este mensaje Enviado: 29/Mayo/2023 a las 08:57
Hola,

Como veo que llevas varios días de intentos, al final me decidí a probar de hacer la función. He emulado la función DIAS.LAB.INTL de Excel con alguna ligera variación.

Aquí puedes encontrarla: Cálculo de dia laborable flexivo

A ver si te sirve

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
maserrano Ver desplegable
Colaborador
Colaborador


Unido: 02/Abril/2014
Localización: España
Estado: Sin conexión
Puntos: 690
Enlace directo a este mensaje Enviado: 29/Mayo/2023 a las 14:58

Gracias Xavi.

La verdad es que me cuesta muchas veces ver las cosas, los detalles.

Aun así, comprobemos si soy capaz de ponerlo en marcha.

Hecha la función (DiaLabIntl), ahora se trata de probarlo en un ejemplo, donde tenemos:

-Lo primero crear una tabla (tblDatFestivos) con un campo llamado FechaFestiva

-Un formulario con un campo de fecha inicial: txtFechaInicial y otro campo de días de plazo a esa fecha (txtDiasProceso).

A este último campo, le aplico un evento de tipo después de actualizar donde llamo a la función; algo así:

 

Private Sub txtDiasProceso_AfterUpdate()

Dim FechaFinal As Date

FechaFinal = DiaLabIntl()

If IsDate(Me.txtFechaInicial) And IsString(Me.txtDiasProceso) And IsDate(Me.txtFechaFinal) Then

Me.txtFechaFinal = FechaFinal(Me.txtFechaInicial, Me.txtDiasProceso)

End If

End Sub

 

 

…, y en el campo txtFechaFinal debe de aparecer la fecha final como resultado de aplicarle a la inicial los días de plazo sin contar sábados, domingos y festivos.

 

Pero no me sale. De momento me dice en DiaLabIntl(), que el argumento no es opcional. He intentado con la ayuda F1 pero no me aclaro…




Editado por maserrano - 29/Mayo/2023 a las 15:56
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14732
Enlace directo a este mensaje Enviado: 29/Mayo/2023 a las 17:47
Hola,

Estas haciendo mal la secuencia de acciones. Estas asignando a una variable FechaFinal la función sin argumentos (error); luego validas que tienes los 3 campos (otro error: el FechaFinal no puede estar relleno) para, finalmente, lanzar una función FechaFinal (otro error: FechaFinal es una variable de tipo fecha, no una función).


La función DiaLabIntl requiere los argumentos FechaInicial y DiasProceso. Los argumentos del tipo de semana o de la tabla de festivos son opcionales. Por defecto toman "0000011" (sábado y domingo no-laborables) y True (aplica la tabla de festivos)

La secuencia de acciones es:
Comprobar que tenemos una fecha inicial y un numero de días --> asignar la fecha final el cálculo

If IsDate(Me!txtFechaInicial) And IsNumeric(Me!txtDiasProceso) Then
  Me!txtFechaFinal = DiaLabIntl(Me!txtFechaInicial, Me!txtDiasProceso)
End If

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
maserrano Ver desplegable
Colaborador
Colaborador


Unido: 02/Abril/2014
Localización: España
Estado: Sin conexión
Puntos: 690
Enlace directo a este mensaje Enviado: 30/Mayo/2023 a las 17:32
Vaya, muchas gracias Xavi.
Qué desencaminado estaba.
Lo he probado (por fin) y va perfecto.
Gracias a todos y se puede cerrar la consulta por mi parte
Arriba
 Responder Responder Página  <12
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable