Access - Calcular edad con años, meses y dias

 
Vista:

Calcular edad con años, meses y dias

Publicado por Miguel Jimenez (1 intervención) el 09/03/2010 07:14:21
Hola a todos¡

Tengo un formulario que tiene un campo llamado F_Nac (Fecha de Nacimiento)
y tengo otro campo llamado Edad, al cual le puse la siguiente formula:

=DifFecha("aaaa",[F_Nac],Ahora())-SiInm(Formato(Ahora(),"mmdd")<Formato([F_Nac],"mmdd"),1,0)

y me da solamente los años enteros.

Ahora quiera saber que puedo hacer para que me despliegue por ejemplo:

38 años, 7 Meses, 4 Dias.

de antemano, gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Calcular edad con años, meses y dias

Publicado por Jefferson (1 intervención) el 09/03/2010 15:39:47
Hola Miguel Jimenez

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Public Function DiferenciaFechas(ByVal dtmFecha1 As Date, ByVal dtmFecha2 As Date) As String
   Dim dtmFechaMayor As Date
   Dim dtmFechaMenor As Date
   Dim intAños As Integer
   Dim intMeses As Integer
   Dim intDias As Integer
 
   If dtmFecha1 >= dtmFecha2 Then
      dtmFechaMayor = dtmFecha1
      dtmFechaMenor = dtmFecha2
   Else
      dtmFechaMayor = dtmFecha2
      dtmFechaMenor = dtmFecha1
   End If
 
   'Averiguar cuántos años
   intAños = DateDiff("yyyy", dtmFechaMenor, dtmFechaMayor)
 
   'Cambiar el año de la fecha menor al mismo que la fecha mayor
 
   dtmFechaMenor = DateSerial(Year(dtmFechaMayor), Month(dtmFechaMenor), Day(dtmFechaMenor))
   'Averiguar cuántos meses
   intMeses = DateDiff("m", dtmFechaMenor, dtmFechaMayor)
 
   'Cambiar el año y el mes de la fecha menor a los mismos que la fecha mayor
   dtmFechaMenor = DateSerial(Year(dtmFechaMayor), Month(dtmFechaMayor), Day(dtmFechaMenor))
   'Averiguar cuántos días
   intDias = DateDiff("d", dtmFechaMenor, dtmFechaMayor)
 
   DiferenciaFechas = intAños & " Años " & intMeses & " Meses y " & intDias & " Días"
End Function

Prueba esta funcion del Buho
Desde Venezuela
Jefferson
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular edad con años, meses y dias

Publicado por Gerson Castillo (1 intervención) el 20/11/2011 02:26:00
Hola, esta fórmula funciona creando dos campos una llamado [F_Inicial]= Fecha Inicial y otro llamado [F_Final]= Fecha Final o si quieres solo remplaza el nombre de los campos en la formula por el que tu uses, y un tercero donde calculará el resultado final.


=SiInm((Día([F_Final])-Día([F_Inicial]))<0 Y (DifFecha("m",[F_Inicial],[F_Final])-(DifFecha("aaaa",[F_Inicial],[F_Final])*12))=0,DifFecha("aaaa",[F_Inicial],[F_Final])-1,DifFecha("aaaa",[F_Inicial],[F_Final])) & SiInm((SiInm((Día([F_Final])-Día([F_Inicial]))<0 Y (DifFecha("m",[F_Inicial],[F_Final])-(DifFecha("aaaa",[F_Inicial],[F_Final])*12))=0,DifFecha("aaaa",[F_Inicial],[F_Final])-1,DifFecha("aaaa",[F_Inicial],[F_Final])))>1," Años "," Año ") & SiInm((Día([F_Final])-Día([F_Inicial]))<0 Y (DifFecha("m",[F_Inicial],[F_Final])-(DifFecha("aaaa",[F_Inicial],[F_Final])*12))=0,"11",SiInm((Día([F_Final])-Día([F_Inicial]))<0,(DifFecha("m",[F_Inicial],[F_Final])-(DifFecha("aaaa",[F_Inicial],[F_Final])*12))-1,DifFecha("m",[F_Inicial],[F_Final])-(DifFecha("aaaa",[F_Inicial],[F_Final])*12))) & SiInm((SiInm((Día([F_Final])-Día([F_Inicial]))<0 Y (DifFecha("m",[F_Inicial],[F_Final])-(DifFecha("aaaa",[F_Inicial],[F_Final])*12))=0,"11",SiInm((Día([F_Final])-Día([F_Inicial]))<0,(DifFecha("m",[F_Inicial],[F_Final])-(DifFecha("aaaa",[F_Inicial],[F_Final])*12))-1,DifFecha("m",[F_Inicial],[F_Final])-(DifFecha("aaaa",[F_Inicial],[F_Final])*12))))>1," Meses "," Mes ") & SiInm((Día([F_Final])-Día([F_Inicial]))<0,Día([F_Final])-Día([F_Inicial])+Día(AgregFecha("d",Día([F_Final])*-1,[F_Final])),Día([F_Final])-Día([F_Inicial]))

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calcular edad con años, meses y dias

Publicado por DVRGUEZ77 (1 intervención) el 03/06/2013 20:10:45
Por qué la edad me sale con números negativos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular edad con años, meses y dias

Publicado por deybi joel perez (1 intervención) el 18/06/2014 03:53:17
Buen Dia
Tengo estos
fecha de registro 17/06/2014
fecha de nacimiento 12/12/2012

y me sale :
2 Años -6 Mes 5

siendo 1 años y 6 meses.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular edad con años, meses y dias

Publicado por Ricardo (1 intervención) el 10/07/2016 08:42:18
hola: necesito ayuda con el modulo de calculo de edad en años, meses y dias
los campos de mi formulario son para fecha mayor: fecha() y para fecha menor: Fnac

me podrian ayudar en como llamar este modulo en un formulario ingresando la fecha actual (que esta en forma automatica) e ingresando la fecha de nacimiento (Fnac) y como hacer que aparezca la edad en años, meses y dias en mi formulario por favor. No ,me manejo mucho y hago lo que puedo en esto. Gracias

es el modulo de arriba:
Public Function DiferenciaFechas(ByVal dtmFecha1 As Date, ByVal dtmFecha2 As Date) As String
Dim dtmFechaMayor As Date
Dim dtmFechaMenor As Date
Dim intAños As Integer
Dim intMeses As Integer
Dim intDias As Integer

If dtmFecha1 >= dtmFecha2 Then
dtmFechaMayor = dtmFecha1
dtmFechaMenor = dtmFecha2
Else
dtmFechaMayor = dtmFecha2
dtmFechaMenor = dtmFecha1
End If

'Averiguar cuántos años
intAños = DateDiff("yyyy", dtmFechaMenor, dtmFechaMayor)

'Cambiar el año de la fecha menor al mismo que la fecha mayor

dtmFechaMenor = DateSerial(Year(dtmFechaMayor), Month(dtmFechaMenor), Day(dtmFechaMenor))
'Averiguar cuántos meses
intMeses = DateDiff("m", dtmFechaMenor, dtmFechaMayor)

'Cambiar el año y el mes de la fecha menor a los mismos que la fecha mayor
dtmFechaMenor = DateSerial(Year(dtmFechaMayor), Month(dtmFechaMayor), Day(dtmFechaMenor))
'Averiguar cuántos días
intDias = DateDiff("d", dtmFechaMenor, dtmFechaMayor)

DiferenciaFechas = intAños & " Años " & intMeses & " Meses y " & intDias & " Días"
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calcular edad con años, meses y dias

Publicado por Jorge Nacud (1 intervención) el 27/08/2015 10:51:25
Tendras que crear primeramente 2 modulos en visual basic con lo siguiente:

Primeramente el Modulo "Años".

1
2
3
4
5
6
7
8
9
10
11
Function Age(f_nac As Variant) As Integer
   Dim varAge As Variant
 
   If IsNull(f_nac) then Age = 0: Exit Function
 
   varAge = DateDiff("yyyy",f_nac, Now)
   If Date < DateSerial (Year(Now), Month(f_nac), Day(f_nac)) Then
      varAge = varAge - 1
   End If
   Age = CInt(Age)
End Function

Ahora guardas y das un nombre al modulo.

Enseguida crearas el modulo "Meses".

1
2
3
4
5
6
7
8
Function AgeMonths(ByVal f_nac As String) As Integer
   Dim Tage As Double
      tAge = (DateDiff("m", f_nac, Now))
      If (DatePart("d",f_nac) > DatePart("d", Now)) Then
         tAge = tAge - 1
      End If
   AgeMonths = CInt (tAge Mod 12)
End Function

Guardas y das nombre al segundo modulo...

Ahora en tu campo que nombraste "Edad" colocaras la siguiente formula:

=Age([f_nac]) & "Año (s), " & agemonths([f_nac]) & " Mes (es) y " & SiInm((Día(fecha()) - Día([f_nac])) < 0, Día(fecha()) - Día([f_nac]) + Día(AgregFecha("d", Día(fecha()) * -1, Fecha())), Día(fecha()) - Día([f_nac])) & "Día (s)."

Y Listo!!!! en cuanto coloques las fechas de nacimiento, en automatico te realiza el calculo del edad en el registro en el que estes trabajando.... espero te sea de utilidad
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calcular edad con años, meses y dias

Publicado por Rafael Frett (1 intervención) el 04/11/2015 18:28:01
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
‘ Es para acces o cualquier formulario de basic donde exitan tres campos: fecha de entrada, fecha de salida y  tiempo en texto. Funciona de maravilla. ;)
 
Private Sub CalcularTiempo()
 
Dim Año, Mes, Dia, Año2, Mes2, Dia2, AñoText, MesText, DiaText, MesTomado As Integer
Dim TiempoTexto As String
Dim FechaEntrada, FechaSalida as Date
 
Primero se determinan
Año = Year(FechaSalida)
Año2 = Year(FechaEntrada)
 
Mes = Month(FechaSalida)
Mes2 = Month(FechaEntrada)
 
Dia = Day(FechaSalida)
Dia2 = Day(FechaEntrada)
 
If Month(FechaSalida) = 2 Then
    	MesTomado = 28
ElseIf Month(FechaSalida) = 1 Or 3 Or 5 Or 7 Or 8 Or 10 Or 12 Then
    	MesTomado = 31
Else
    	MesTomado = 30
End If
 
If Dia2 > Dia Then
Dia = Dia + MesTomado
Mes = Mes - 1
End If
 
 
If Mes2 > Mes Then
Mes = Mes + 12
Año = Año - 1
End If
 
DiaText = Dia - Dia2
AñoText = Año - Año2
MesText = Mes - Mes2
 
TiempoTexto = AñoText & " año(s), " & MesText & " mes(es) y " & DiaText & " días."
 
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calcular edad con años, meses y dias

Publicado por Eclipsa (1 intervención) el 01/04/2017 04:28:39
Hola Rafael Frett, de verdad te agradezco profunda el que hayas publicado y compartido tu trabajo y esfuerzo; yo soy una persona que ya tengo algo con lo vba, pero de repente estoy en blanco.

DE VERDAD MUCHAS GRACIAS.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Panchove
Val: 467
Plata
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Calcular edad con años, meses y dias

Publicado por Panchove (211 intervenciones) el 29/04/2017 16:34:48
Otra solucion.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
Function CalcularEdad(ByVal d1 As Date, ByVal d2 As Date)
 
    Dim mmDay(0 To 12) As Integer
    Dim fromDate As Date
    Dim toDate As Date
    Dim yy As Integer
    Dim mm As Integer
    Dim dd As Integer
    Dim increment As Integer
    Dim sAge As String
 
    mmDay(0) = 31
    mmDay(1) = 31
    mmDay(2) = -1
    mmDay(3) = 31
    mmDay(4) = 30
    mmDay(5) = 31
    mmDay(6) = 30
    mmDay(7) = 31
    mmDay(8) = 31
    mmDay(9) = 30
    mmDay(10) = 31
    mmDay(11) = 30
    mmDay(12) = 31
 
 
    'De menor a mayor
    '****************
    fromDate = d1
    toDate = d2
    If (d1 > d2) Then
        fromDate = d2
        toDate = d1
    End If
 
    increment = 0
 
    'Day´s month
    '***********
    If day(fromDate) > day(toDate) Then
        increment = mmDay(month(toDate) - 1)
    End If
    'if it is february month
    'if it's to day is less then from day
    '************************************
    If increment = -1 Then
        increment = 28
        If IsLeap(toDate) Then
            'leap year february contain 29 days
            '**********************************
            increment = 29
        End If
    End If
    'Day Calculation
    '***************
    If increment <> 0 Then
        dd = day(toDate) + increment - day(fromDate)
        increment = 1
    Else
        dd = day(toDate) - day(fromDate)
    End If
    'Month calculation
    '*****************
    If (month(fromDate) + increment) > month(toDate) Then
        mm = (month(toDate) + 12) - (month(fromDate) + increment)
        increment = 1
    Else
        mm = month(toDate) - (month(fromDate) + increment)
        increment = 0
    End If
    'year calculation
    '****************
 
    yy = year(toDate) - (year(fromDate) + increment)
 
    'Armar la cadena de respuesta
    '****************************
    If yy > 0 And yy = 1 Then sAge = yy & " Año,"
    If yy > 0 And yy > 1 Then sAge = yy & " Años,"
    If mm > 0 And mm = 1 Then sAge = sAge & mm & " mes,"
    If mm > 0 And mm > 1 Then sAge = sAge & mm & " meses,"
    If dd > 0 And dd = 1 Then sAge = sAge & dd & " día"
    If dd > 0 And dd > 1 Then sAge = sAge & dd & " días"
 
    'Quitar coma sobrante
    '********************
    sAge = RTrim(LTrim(sAge))
 
    If Len(sAge) > 0 Then
        If Mid$(sAge, Len(sAge), 1) = "," Then sAge = Mid$(sAge, 1, Len(sAge) - 1)
    End If
 
    CalcularEdad = sAge
 
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calcular edad con años, meses y dias

Publicado por Joseph PaTricio (1 intervención) el 03/04/2019 00:01:00
Hola:
he intentado usar tu solución pero me sale error, intente generar esta funcion pero no me sale.

If IsLeap(toDate) Then
'leap year february contain 29 days
'**********************************
increment = 29
End If

Por el momento solo lo he dejado como comentario y si esta buena tu solución

Me podrias ayudar. Gracias
Correo [email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar