Contar años, meses y días access
Tengo la siguiente uda que seguro me podéis resolver.
Para calcular los años,, meses y días que han pasado entre dos fechas utilizdo el siguiente módulo que muy amablemente me paso un experto.
En un cuadro de texto pongo lo siguiente en origen de control
=SiInm(EsNulo([FINCONTRATO]) O Fecha()<=[FINCONTRATO];fncDiferenciaFechas([INICIOCONTRATO];Fecha());
Pues bien, me gustaría que en el caso de que todavía no hubiese llegado la fecha de inicio de contrato o bien no me apareciese nada o bien apareciese un signo de - y el nº de días (- 5 días ). Ahora mismo me parece el 5, es decir, aunque falten 5 días para que comience el contrato y por lo tanto tendría que ser -5 días
Muchas gracias por vuestra ayuda
Una brazo
Dim vMES As Double
Dim vDia As Double
Dim temp As Date
If IsNull(laFechaIni) Or IsNull(laFechaFin) Then
fncDiferenciaFechas = ""
Exit Function
End If
If laFechaIni > laFechaFin Then
temp = laFechaIni
laFechaIni = laFechaFin
laFechaFin = temp
ElseIf laFechaIni = laFechaFin Then
fncDiferenciaFechas = "1 días"
Exit Function
End If
If Month(laFechaIni) > Month(laFechaFin) Then
vaño = DateDiff("yyyy", laFechaIni, laFechaFin) - 1
Else
vaño = DateDiff("yyyy", laFechaIni, laFechaFin)
End If
If Day(laFechaIni) > Day(laFechaFin) Then
vMES = DateDiff("m", DateAdd("yyyy", vaño, laFechaIni), laFechaFin) - 1
If vMES < 0 Then
vMES = 12 + vMES
vaño = vaño - 1
End If
Else
vMES = DateDiff("m", DateAdd("yyyy", vaño, laFechaIni), laFechaFin)
End If
vDia = DateDiff("d", DateAdd("m", vaño * 12 + vMES, laFechaIni), laFechaFin) + 1 ' Mod 7
If vaño = 1 Then
fncDiferenciaFechas = vaño & " año"
ElseIf vaño > 1 Then
fncDiferenciaFechas = vaño & " años"
End If
If vMES = 1 Then
fncDiferenciaFechas = IIf(fncDiferenciaFechas = "", "", fncDiferenciaFechas & " y ") & vMES & " mes"
ElseIf vMES > 1 Then
fncDiferenciaFechas = IIf(fncDiferenciaFechas = "", "", fncDiferenciaFechas & " y ") & vMES & " meses"
End If
If vDia = 1 Then
fncDiferenciaFechas = IIf(fncDiferenciaFechas = "", "", fncDiferenciaFechas & " y ") & vDia & " día"
ElseIf vDia > 1 Then
fncDiferenciaFechas = IIf(fncDiferenciaFechas = "", "", fncDiferenciaFechas & " y ") & vDia & " días"
End If
End Function
3 Respuestas
Respuesta de Sveinbjorn El Rojo
2
Respuesta de Julián González Cabarcos
2
Respuesta de Eduardo Pérez Fernández
1

