Buscando funcion de Chea.....
Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84686
Fecha de impresión: 29/Marzo/2024 a las 15:29
Tema: Buscando funcion de Chea.....
Publicado por: rokoko
Asunto: Buscando funcion de Chea.....
Fecha de publicación: 01/Septiembre/2019 a las 15:38
Estoy buscando una funcion en particular de Chea, llamada creo DiasHabiles. He encontrado varias versiones de esta, pero la que tiene encuenta o no los sabados(true o false) no la encuentro, y los enlaces que encuentro estan caidos. A ve si alguno la tiene por hay.....
Saludos
|
Respuestas:
Publicado por: pitxiku
Fecha de publicación: 01/Septiembre/2019 a las 16:29
A ver si este hilo te sirve de guía:
- https://microsoft.public.es.access.narkive.com/Me8b8ije/formula-para-calculo-de-dias-habiles
Pero si la función tiene en cuenta los domingos, se puede alterar para que también tenga en cuenta los sábados (o no).
|
Publicado por: rokoko
Fecha de publicación: 01/Septiembre/2019 a las 17:26
Creo que ya he andado por todos los hilos de todas la web sobre este tema jijijiji, en particular es la que pones he intentado modificarla para que de una forma facil me permita incluir en la cuenta los sabado o no, con un bolean como parámetro de la funcion por ejemplo, pero no lo logro....
|
Publicado por: Mihura
Fecha de publicación: 01/Septiembre/2019 a las 17:48
Entonces, según relatas, si en vez de buscar te hubieras puesto ya la tendrías hecha.
¿Y si la hacemos?
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: rokoko
Fecha de publicación: 01/Septiembre/2019 a las 19:08
La funcion que utilizo ahora es esta y funciona correctamente. Esta sacada de aqui y modificada. https://social.technet.microsoft.com/Forums/ie/es-ES/f53909cc-c91a-4dba-b90a-397ad1638447/calcular-el-dia-siguiente-habil-a-una-fecha?forum=exceles" rel="nofollow - https://social.technet.microsoft.com/Forums/ie/es-ES/f53909cc-c91a-4dba-b90a-397ad1638447/calcular-el-dia-siguiente-habil-a-una-fecha?forum=exceles
A la fecha dada le suma x dias y calcula el siguiente dia habil quitando sabados, domingos y festivos de una tabla.
Lo que pretendo es, de una forma facil metiante otro parametro boleano en la funcion que el sabado sea festivo o no.....
Public Function SiguienteDiaHabil2(dFecha As Date, Dias As Integer) As Date 'Le pasamos la fecha y los dias que queremos sumarle
Dim dIntermedio As Date, iCuenta As Integer 'Sumamos fecha mas dias Dim varFechaMasDias As Date varFechaMasDias = dFecha + Dias 'MsgBox varFechaMasDias 'dIntermedio = DateAdd("d", 1, dFecha) dIntermedio = DateAdd("d", 1, varFechaMasDias) 'Le pasamos la fecha mas dias y empieza el calculo 'MsgBox dIntermedio iCuenta = DCount("DiaCerrado", "tbDiaCerrado", "DiaCerrado=#" & Format(dIntermedio, "mm/dd/yyyy") & "#") If Weekday(dIntermedio, vbMonday) = 6 Or Weekday(dIntermedio, vbMonday) = 7 Then dIntermedio = SiguienteDiaHabil(dIntermedio, 0) 'Ponemos 0 ya que los dias se los hemos pasado y sumado anteriormente ElseIf iCuenta > 0 Then dIntermedio = SiguienteDiaHabil(dIntermedio, 0) 'Ponemos 0 ya que los dias se los hemos pasado y sumado anteriormente End If SiguienteDiaHabil2 = dIntermedio '+++++++++++++++++++++ 'MsgBox SiguienteDiaHabil Me.FechaLimiteDevolucion = SiguienteDiaHabil2 End Function
Actualizado, tenia un fallo la funcion faltaba , 0) 'Ponemos 0 ya que los dias se los hemos pasado y sumado anteriormente
|
Publicado por: guarracuco
Fecha de publicación: 01/Septiembre/2019 a las 19:32
Y si almacena los días hábiles en una tablita?
|
Publicado por: rokoko
Fecha de publicación: 01/Septiembre/2019 a las 19:37
guarracuco escribió:
Y si almacena los días hábiles en una tablita?
|
Con que objetivo?? Todos años habria que cambiar esos dias, de la otra forma, son unos pocos festivos al año que la mayoria se repetiarian e excepcion de semana santa en España....
Saludos
|
Publicado por: guarracuco
Fecha de publicación: 01/Septiembre/2019 a las 20:14
Quise decir,los festivos. Que lógica estas utilizando para saber cuando un sábado es festivo?
|
Publicado por: pitxiku
Fecha de publicación: 01/Septiembre/2019 a las 20:39
Más o menos (escrito aquí directamente, ahí que puede haber fallos):
Public Function SiguienteDiaHabil(dFecha As Date, ContarSabados As Boolean) As Date Dim dIntermedio As Date, iCuenta As Integer dIntermedio = DateAdd("d", 1, dFecha) iCuenta = DCount("Anyo", "DiasFestivos", "Fecha=#" & Format(dIntermedio, "mm/dd/yyyy") & "#") If ContarSabados And (Weekday(dIntermedio, vbMonday) = 6) Then dIntermedio = SiguienteDiaHabil(dIntermedio, ContarSabados) ElseIf Weekday(dIntermedio, vbMonday) = 7 Then dIntermedio = SiguienteDiaHabil(dIntermedio, ContarSabados) ElseIf iCuenta > 0 Then dIntermedio = SiguienteDiaHabil(dIntermedio, ContarSabados) End If SiguienteDiaHabil = dIntermedio End Function
|
|
Publicado por: rokoko
Fecha de publicación: 01/Septiembre/2019 a las 20:52
guarracuco escribió:
Quise decir,los festivos. Que lógica estas utilizando para saber cuando un sábado es festivo?
|
Pues en este caso ese sabado deberia ir en la tabla de festivos, si consideramos el sabado laborable en la funcion.
|
Publicado por: rokoko
Fecha de publicación: 01/Septiembre/2019 a las 22:03
Pitxiku, la he probado un poco y parece que funciona correctamente, la probare mas detalladamente y a ver si la adapto lo de sumarle X Dias.
Edito:
Y asi parece que tambien, sumandole x dias, por ejemplo seria util para sacar la fecha de devolucion de un libro de una biblioteca si se dan x dias para el alquiler
Public Function SiguienteDiaHabil(dFecha As Date, Dias As Integer, ContarSabados As Boolean) As Date Dim dIntermedio As Date, iCuenta As Integer 'Sumamos fecha mas dias Dim varFechaMasDias As Date varFechaMasDias = dFecha + Dias 'MsgBox varFechaMasDias dIntermedio = DateAdd("d", 1, varFechaMasDias) iCuenta = DCount("DiaCerrado", "tbDiaCerrado", "DiaCerrado=#" & Format(dIntermedio, "mm/dd/yyyy") & "#") If ContarSabados And (Weekday(dIntermedio, vbMonday) = 6) Then dIntermedio = SiguienteDiaHabil(dIntermedio, 0, ContarSabados) 'Ponemos 0 ya que antes ya le hemos sumado los dias ElseIf Weekday(dIntermedio, vbMonday) = 7 Then dIntermedio = SiguienteDiaHabil(dIntermedio, 0, ContarSabados) ElseIf iCuenta > 0 Then dIntermedio = SiguienteDiaHabil(dIntermedio, 0, ContarSabados) End If SiguienteDiaHabil = dIntermedio Me.FechaLimiteDevolucion = SiguienteDiaHabil
|
Publicado por: rokoko
Fecha de publicación: 02/Septiembre/2019 a las 09:49
Se puede cerrar. Muchas gracias a todos.
Saludos
|
|