Fechas meses y días

Sr. Victor buenas dias tengo una pregunta recuerda el codigo que me envio, desde luego me ayudo mucho pero  estoy tratando de resolver un pequeño problema cuando quiero saber la edad dentro de un una fecha ejem del 01/04/08 al 04/04/08 muestra 3 en ves de 4 y cuando ingreso esta fecha ejem del 29/03/08 al 01/04/08 sale -3 por favor podria ayudarme
gracias amigo
m.dFecNac = ThisForm.Text1.Value
m.dFecHoy = ThisForm.Text2.Value
m.nAños = Year(m.dFecHoy) - Year(m.dFecNac)
m.nMeses = Month(m.dFecHoy) - Month(m.dFecNac)
m.nDias = Day(m.dFecHoy) - Day(m.dFecNac)
If m.nDias < 0
m.nAnterior = Day( Date(Year(m.dFecHoy), Month(m.dFecHoy), 1 ) - 1 )
m.nDías = m.nDias - m.nAnterior
m.nMeses = m.nMeses - 1
EndIf
If m.nMeses < 0
m.nMeses = m.nMeses + 12
m.nAños = m.nAños - 1
EndIf
m.nEdad = Iif( m.nAños > 0, m.nAños, Iif(m.nMeses > 0, m.nMeses, m.nDias))
If Messagebox("Desea grabar los registros",36,"Mensaje del Sistema")=6
Append Blank
Replace edad With Alltrim( Str( m.nAños ) )
If m.nAños = 0
Replace mes With Alltrim( Str( m.nMeses ) )
If m.nMeses = 0
Replace dias With Alltrim( Str( m.nDias ) )
endif
endif
EndIf

1 Respuesta

Respuesta
1
En el caso en que la fecha de nacimiento es el primero de abril de 2008 y la fecha actual es el cuatro de abril de 2008 la respuesta es correcta:
Del 01/04/2008 al 02/04/2008 = 1 día
Del 02/04/2008 al 03/04/2008 = 1 día
Del 03/04/2008 al 04/04/2008 = 1 día
Suma = 3 días.
El código ya lo corregí, aparentemente se pasó un acento en la variable nDias:
m.nAños = YEAR(m.dFecHoy) - YEAR(m.dFecNac)
m.nMeses = MONTH(m.dFecHoy) - MONTH(m.dFecNac)
m.nDias = DAY(m.dFecHoy) - DAY(m.dFecNac)
IF m.nDias < 0
     m.nAnterior = DAY( DATE(YEAR(m.dFecHoy), MONTH(m.dFecHoy), 1 ) - 1 )
     m.nDias = m.nDias + m.nAnterior
     m.nMeses = m.nMeses - 1
ENDIF
IF m.nMeses < 0
     m.nMeses = m.nMeses + 12
     m.nAños = m.nAños - 1
ENDIF
m.nEdad = IIF( m.nAños > 0, m.nAños, IIF(m.nMeses > 0, m.nMeses, m.nDias))
IF MESSAGEBOX("Desea grabar los registros", 36, "Mensaje del Sistema") = 6
     APPEND BLANK
     REPLACE edad WITH ALLTRIM( STR( m.nAños ) )
     IF m.nAños = 0
          REPLACE mes WITH ALLTRIM( STR( m.nMeses ) )
          IF m.nMeses = 0
               REPLACE dias WITH ALLTRIM( STR( m.nDias ) )
          ENDIF
     ENDIF
Endif

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas