dif de fecha quitando los festivos ayuda con el codigo
Publicado por guillermo (8 intervenciones) el 01/02/2012 14:11:59
estimados, tengo este codigo que copie de angelessebas el cual al aplicarlo me da desborde ( y eso que le cargue un solo dato nada mas en la tabla para que calcule la diferencia de dias. me podran ayudar?
Primero creamos una tabla Festivos (Festivo, tipo fecha) en la que meteremos los festivos (no los sábados y domingos)
ya que estos los calcularemos con la función WeekDay (DíaSemana) que nos devuelve el nº del día de la semana
La función sería:
Function DiferenciaFechas()
' Declaramos las variables
Dim db as Database
Dim rs as recordset
Dim vFecha as Date
Dim var as Integer
' Activamos la Base de Datos
Set db=Currentdb
' Generamos el Recordset
Set rs=db.Openrecordset("Select Fecha1, Fecha2, Dias From Tabla1")
' Recorremos el recordset con Do While ... Loop
Do While Not rs.Eof
var=0
vFecha=rs!Fecha1
' Recorremos el intervalo de fechas entre Fecha1 y Fecha2
Do While vFecha
' Vemos si el día de la semana es <> de 6 ó 7 (sábado o domingo)
Is Weekday(vFecha,0)<>6 And Weekday(vFecha,0)<>7 Then
' Comprobamos que la fecha no esté en la tabla Festivos
If IsNull(DLookup("[Festivo]","[Festivos]","[Festivo]=cDate('" & vFecha & "')")) = True Then
' Sí no está acumulamos el día en la variable var
var=var+1
End If
End If
' Pasamos a la fecha siguiente del intervalo
vFecha=vFecha+1
Loop
' Actualizamos el campo dias
rs.Edit
rs!Dias=var
rs.Update
' Pasamos al siguiente registro del recordset
rs.MoveNext
Loop
End Function
Primero creamos una tabla Festivos (Festivo, tipo fecha) en la que meteremos los festivos (no los sábados y domingos)
ya que estos los calcularemos con la función WeekDay (DíaSemana) que nos devuelve el nº del día de la semana
La función sería:
Function DiferenciaFechas()
' Declaramos las variables
Dim db as Database
Dim rs as recordset
Dim vFecha as Date
Dim var as Integer
' Activamos la Base de Datos
Set db=Currentdb
' Generamos el Recordset
Set rs=db.Openrecordset("Select Fecha1, Fecha2, Dias From Tabla1")
' Recorremos el recordset con Do While ... Loop
Do While Not rs.Eof
var=0
vFecha=rs!Fecha1
' Recorremos el intervalo de fechas entre Fecha1 y Fecha2
Do While vFecha
' Vemos si el día de la semana es <> de 6 ó 7 (sábado o domingo)
Is Weekday(vFecha,0)<>6 And Weekday(vFecha,0)<>7 Then
' Comprobamos que la fecha no esté en la tabla Festivos
If IsNull(DLookup("[Festivo]","[Festivos]","[Festivo]=cDate('" & vFecha & "')")) = True Then
' Sí no está acumulamos el día en la variable var
var=var+1
End If
End If
' Pasamos a la fecha siguiente del intervalo
vFecha=vFecha+1
Loop
' Actualizamos el campo dias
rs.Edit
rs!Dias=var
rs.Update
' Pasamos al siguiente registro del recordset
rs.MoveNext
Loop
End Function
Valora esta pregunta


0