Fecha calculada en access 2010

tengo en mi BD dos campos tipo fecha, llamados fecha_final y fecha_fin_pago, la fecha_final contiene las fechas en que termina un contrato de un cliente, pero deseo almacenar en la fecha_fin_pago la fecha siguiente, pero obligatoriamente la fecha_fin_pago debe ser un día hábil. (es decir que no tome en cuenta los sábados ni domingos ni días festivos)

1 ejemplo:

fecha_final= 13/12/2013 fecha_fin_pago= 16/12/2013

2 ejemplo:
fecha_final= 10/12/2013 fecha_fin_pago= 11/12/2013

1 Respuesta

Respuesta
1

Para poder hacerlo necesitas 2 cosas, la primera una tabla con todos los días festivos que quieras incluir (Fiestas), y la segunda, una función que compruebe las fechas y vaya agregando días hasta el siguiente hábil.

La tabla podría contener los siguientes campos:

. Fecha Descripción

Por ejemplo, podría quedar así:

. Fecha Descripción

25/12/13 Navidad

01/01/14 Año Nuevo

06/01/14 Día de Reyes.

...

...

...

Introduces las siguientes funciones en un módulo y luego haces la llamada a la funciónSiguienteHabil pasando el valor de fecha_final como parámetro.

Public Function SiguienteHabil(Dia As Date) As Date
 Dim DiaTemp As Date
 Dim DiaSemana As Integer
 Dim Sigue As Boolean
 DiaTemp = Dia
 Do
 DiaTemp = DiaTemp + 1
 Sigue = False
 DiaSemana = DatePart("w", DiaTemp, vbMonday)
 Select Case DiaSemana
 Case 6, 7
 Sigue = True
 Case 1 To 5
 If EsFestivo(DiaTemp) Then
 Sigue = True
 End If
 End Select
 Loop While Sigue
 SiguienteHabil = DiaTemp
End Function
Public Function EsFestivo(ByVal Dia As Date) As Boolean
 Dim strFecha As String
 Dim varPrueba As Variant
 strFecha = "#" & Format(Dia, "mm/dd/yyyy") & "#"
 varPrueba = DLookup("Fecha", "Fiestas", "[Fecha] =" & strFecha)
 EsFestivo = Not IsNull(varPrueba)
End Function

Puedes probar con el valor "03/01/14" (es un viernes antes del día de Reyes) el valor que te devuelve es 07/01/14, que es martes ya que el día 6 es festivo.

Estoy seguro de que te va a servir, espero que lo puntúes con un 5.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas