Diferencias entre dos fechas...

Pero trabajando en la base de datos los códigos que se encuentran al final, en ambos se produce el siguiente error:
Cuando en un mismo mes el día de inicio es mayor que el día final se produce un error, ejemplo: (FechaInicio 10/10/2009) - (FechaFin 08/10/2010), resultado = 1 años, -1 mes y 28 días. Este error no se produce cuando los meses son distintos.
Estimado Angeles me he roto la cabeza tratando de modificar los códigos, pero mes imposible lograrlo, por tal motivo recurro a usted para que me ayude nuevamente.
Estos son los dos códigos:
Function CalculoDiferenciaAño()
Dim db As Database
Dim rs As Recordset
Dim vAño As Double
Dim vMes As Double
Dim vDia As Double
Set db = CurrentDb
Set rs = db.OpenRecordset("Select * from AñosMesesDias")
Do While Not rs.EOF
If Month(rs!FechaInicio) > Month(rs!FechaFin) Then
vAño = DateDiff("yyyy", rs!FechaInicio, rs!FechaFin) - 1
Else
vAño = DateDiff("yyyy", rs!FechaInicio, rs!FechaFin)
End If
If Day(rs!FechaInicio) > Day(rs!FechaFin) Then
vMes = DateDiff("m", DateAdd("yyyy", vAño, rs!FechaInicio), rs!FechaFin) - 1
Else
vMes = DateDiff("m", DateAdd("yyyy", vAño, rs!FechaInicio), rs!FechaFin)
End If
vDia = DateDiff("d", DateAdd("m", vAño * 12 + vMes, rs!FechaInicio), rs!FechaFin)
rs.Edit
rs!Años = vAño
rs!Meses = vMes
rs!Dias = vDia
rs.Update
rs.MoveNext
Loop
End Function
y
Function CalculoDiferencia()
CalculoDiferencia = Date
Dim db As Database
Dim rs As Recordset
Dim vAño As Double
Dim vMes As Double
Dim vDia As Double
Set db = CurrentDb
Set rs = db.OpenRecordset("Select * from Detalle")
Do While Not rs.EOF
If Month(rs!FechaInicio) > Month(Date) Then
vAño = DateDiff("yyyy", rs!FechaInicio, Date) - 1
Else
vAño = DateDiff("yyyy", rs!FechaInicio, Date)
End If
If Day(rs!FechaInicio) > Day(Date) Then
vMes = DateDiff("m", DateAdd("yyyy", vAño, rs!FechaInicio), Date) - 1
Else
vMes = DateDiff("m", DateAdd("yyyy", vAño, rs!FechaInicio), Date)
End If
vDia = DateDiff("d", DateAdd("m", vAño * 12 + vMes, rs!FechaInicio), Date)
rs.Edit
rs!Años = vAño
rs!Meses = vMes
rs!Dias = vDia
rs.Update
rs.MoveNext
Loop
End Function

1 Respuesta

Respuesta
1
En este momento no tengo la BD que hice para esta pregunta, esta tarde te lo miro.
Pues otro ajuste:
Function CalculoDiferenciaAño()
Dim db As Database
Dim rs As Recordset
Dim vAño As Double
Dim vMes As Double
Dim vDia As Double
Set db = CurrentDb
Set rs = db.OpenRecordset("Select * from AñosMesesDias")
Do While Not rs.EOF
If Month(rs!FechaInicio) > Month(rs!FechaFin) Then
    vAño = DateDiff("yyyy", rs!FechaInicio, rs!FechaFin) - 1
Else
    vAño = DateDiff("yyyy", rs!FechaInicio, rs!FechaFin)
End If
If Day(rs!FechaInicio) > Day(rs!FechaFin) Then
    If Month(rs!FechaInicio) = Month(rs!FechaFin) Then
    vAño = DateDiff("yyyy", rs!FechaInicio, rs!FechaFin) - 1
    vMes = DateDiff("m", DateAdd("yyyy", vAño, rs!FechaInicio), rs!FechaFin) - 1
    Else
    vMes = DateDiff("m", DateAdd("yyyy", vAño, rs!FechaInicio), rs!FechaFin) - 1
    End If
Else
    vMes = DateDiff("m", DateAdd("yyyy", vAño, rs!FechaInicio), rs!FechaFin)
End If
    vDia = DateDiff("d", DateAdd("m", vAño * 12 + vMes, rs!FechaInicio), rs!FechaFin)
rs.Edit
rs!Años = vAño
rs!Meses = vMes
rs!Dias = vDia
rs.Update
rs.MoveNext
Loop
End Function
Para Date igual pero sustituyendo rs! FehaFin por Date.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas