|
Responder ![]() |
Página <12 |
Autor | |
maserrano ![]() Colaborador ![]() Unido: 02/Abril/2014 Localización: España Estado: Sin conexión Puntos: 585 |
![]() |
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 |
|
![]() |
|
mounir ![]() Colaborador ![]() Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6452 |
![]() |
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.
|
|
![]() |
|
xavi ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador ![]() ![]() Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14543 |
![]() |
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
|
|
![]() |
|
maserrano ![]() Colaborador ![]() Unido: 02/Abril/2014 Localización: España Estado: Sin conexión Puntos: 585 |
![]() |
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 |
|
![]() |
|
xavi ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador ![]() ![]() Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14543 |
![]() |
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
|
|
![]() |
|
maserrano ![]() Colaborador ![]() Unido: 02/Abril/2014 Localización: España Estado: Sin conexión Puntos: 585 |
![]() |
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
|
|
![]() |
Responder ![]() |
Página <12 |
Tweet
|
Ir al foro | Permisos de foro ![]() Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |