Calcular días, meses y años en Vfp

Tengo un Formulario por el cual deseo hace cálculos de años de trabajo del personal, entre los cuales cuento con dos campos TexBox llamado Fec_Ini y Fec_Fin y su propiedad en el el Format esta como DE de campos fecha. Lo que necesito es que me calcule y me devuelvo los valores del Año, Mes y Día que han Transcurrido en base a los Valores Fec_Ini y Fec_Fin.

1 respuesta

Respuesta
1

Intenta algo similar a:

With Thisform
  años = Year(.Fec_Fin.Value) - Year(Fec_Ini.Value)
  meses = Month(.Fec_Fin.Value) - Month(Fec_Ini.Value)
  días = Day(.Fec_Fin.Value) - Day(Fec_Ini.Value)
  If días < 0
    días = días + 30
    meses = meses - 1
  EndIf
  If meses < 0
    meses = meses + 12
    años = años - 1
  EndIf
EndWith

En las variables años, meses y días se encuentran los valores correspondientes.

Estimado amigo he probado tu ejemplo pero me sale Error: El Valor, Tipo o Numero de arguemntos no es Válido para la función. Dime las variables Años, Meses y días como que las declaro. Por que mis campos Fec_Ini y Fec_Fin están declarado como caracteres y la Pripiedad FORMAT es como D.

Los campos Fec_Ini y Fec_Fin deben ser fechas...

Modificando el código:

FechaFinal = CtoD(Thisform.Fec_Fin.Value)
FechaInicial = CtoD(Thisform.Fec_Ini.Value)
años = Year(FechaFinal) - Year(FechaInicial)
meses = Month(FechaFinal) - Month(FechaInicial)
días = Day(FechaFinal) - Day(FechaInicial)
If días < 0
  días = días + 30
  meses = meses - 1
EndIf
If meses < 0
  meses = meses + 12
  años = años - 1
EndIf

Estimado Amigo Buenos Días con las modificaciones que hiciste quedo casi bien pero lo que he notado que los Días no calcula bien tiene un error de 13 días. He probvado con estas fechas:

FechaInicial=14/06/1984   FechaFinal=01/06/2009 el resultado deberia ser:

años=24

meses=11

dias=17 (pero sale 30 dias)

Espero tu pronta ayuda Mil Gracias

Verifica que el formato de la ffecha sea DMY (SET DATE DMY), puedes agregarlo en la sección de configuración (seteo) de tu programa o al inicio del código que indiqué.

Buenas amigo ya lo puse e igual sigue calculando 30 días y en la configuración de los SET esta así:

Set Delete on
Set Century on
Set Date to Dmy
Set Notify Off
Set Talk Off
Set Safety Off
Set NullDisplay To ""

¿Ya depuraste el código para encontrar porque sucede eso?, si muestra 30 es porque una de las fechas no se está convirtienedo de manera adecuada.

¡Gracias! Amigo ya Funciona Correctamente, el Error estaba Aquí en la Variable Días

Días = Day(FechaFinal) - Day(FechaInicial)

Q esta con Tilde y en mis otras variables estaba sin Tilde

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas