Calcular los días a partir de dos fechas

Quiero calcular los días entre dos fechas, el resultado almacenarlo en mi tabla donde tengo muchos campos ahora lo que estoy construyendo es un finiquito de un trabajador, la primera parte.

Fecha de Inicio = 23/10/2014

Fecha Termino = 12/01/2015

Resultado = Días trabajados = 81 = Habiles = xx Inhábiles= xx

Ojala calcular también los días hábiles he inhábiles como sábados domingos y festivos.

Los Campos Fecha de inicio y término, los tengo porque los uso siempre, para saber cuando entro y cuando termino.

Nota: Seguí el ejemplo de Miguel Neckito de cálculo de fechas me funciona pero no almacena en la tabla

2 Respuestas

Respuesta
1

Prueba crear un modulo estándar y prueba con el siguiente código:

'************************************************************************
' Autor: MexMan70
' Fecha: 13/06/2006
' Uso: fnEdad(FechaInicial, FechaFinal)
' Si usas esta funcion, respeta su autoría
'************************************************************************
Public Function fnEdad(fInicio As Date, fFinal As Date) As String
Dim nAños As Integer
Dim nMeses As Integer
Dim nDias As Integer

nAños = Int((fFinal - fInicio) / 365.25)
fInicio = DateAdd("yyyy", nAños, fInicio)
nMeses = Int((fFinal - fInicio) / (365 / 12))
fInicio = DateAdd("m", nMeses, fInicio)
nDias = DateDiff("d", fInicio, fFinal)
Debug.Print "Años:" & nAños & " Meses:" & nMeses & " Dias:" & nDias
fnEdad = nAños & "|" & nMeses & "|" & nDias
End Function

Con esta función se puede calcular el tiempo transcurrido en años, meses y días. Para la cuestión de los días festivos hay que crear una tabla y ejecutar una función de dominio para contar los días inhábiles. Ejemplo:

Festivos = DCount("*", "TablaFestivos", "cDbl(CampoFecha) Between " & CDbl(AuiLaFechaInicial) & " AND " & CDbl(AquiLaFechaFinal))

Donde TablaFestivos es tu tabla en donde guadaras los días festivos del año.

Respecto a los sábados y domingos, te pongo un ejemplo para contar los Domingos, tu te engarcas de adaptarlo para que cuente ambos días:

Public Function fnContDom(FechaInicial As Date, FechaFinal As Date) As Long
Dim i As Long, fAux As Date
fAux = FechaFinnal
For i = FechaInicial To FechaFinal
If Weekday(fAux) = 1 Then   'Si Weekday (Dia de lasemana es uno es Domingo)
fnContDom = fnContDom + 1
End If
fAux = fAux - 1
Next
End Function

Seria mucho pedir si tuvieras el ejemplo en una base de datos

[email protected]

Gracias, muchas gracias

Pues creo que si es mucho pedir. Ya te he dado los ejemplos; ahora falta que los adaptes.

Respuesta
2

A ver si este otro ejemplo de neckkito te soluciona el problema:

http://siliconproject.com.ar/neckkito/index.php/ejemplos-explicados/todos/93-ejemplos-explicados/ejemplos-de-formularios/160-guardar-campo-calculado-en-tabla 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas