miércoles, 28 de noviembre de 2012

Calcular dias de diferencia entre 2 fechas

Saludos. Algunas veces necesitamos calcular los dias de diferencia entre dos fechas. Por ejemplo... cuantos dias hay entre el 01/08/2012 y el 01/09/2012 (agosto - septiembre) y obtener el resultado en un numero entero especifico (30 dias). Imaginemos que tenemos un text1 donde ingresamos la fecha inicial (01/08/2012/) y un text2, donde ingresamos la fecha final (01/09/2012). Ambos tienen una D (formato fecha) en la propiedad Format de la pestaña DATA. En el Init del fomr configuramos (segun se desee) el tipo de siglo:

**--Para mostrar 2012 en lugar de 12
SET CENTURY ON

Luego, copiamos este codigo en algun evento:

LOCAL ldFechaDesde, ldFechaHasta, ldDiaD, ldMesD, ldAnoD,  ldDiaH, ldMesH, ldAnoH, lnFechaResul

*Fecha inicial
ldFechaDesde = CTOD(ALLTRIM(THISFORM.Text1.Value))

    ldAnoD = YEAR(ldFechaDesde)
    ldMesD = MONTH(ldFechaDesde)
    ldDiaD = DAY(ldFechaDesde)
   
**Fecha final
    ldFechaHasta = CTOD(ALLTRIM(THISFORM.Text2.Value))
   
        ldAnoH = YEAR(ldFechaHasta)
        ldMesH = MONTH(ldFechaHasta)
        ldDiaH = DAY(ldFechaHasta)
**
lnFechaResul =  DATE(ldAnoH, ldMesH, ldDiaH) - DATE(ldAnoD, ldMesD, ldDiaD)

MESSAGEBOX(lnFechaResul)


Y listo. Guardamos y ejecutamos.  El numero de dias lo tenemos contenido en la variable lnFechaResul y podemos proceder a hacer uso efectivo de el.

Saludos! Desde Managua, Nicaragua!
Ravenn :D :D :D

3 comentarios:

  1. Cuando llega a lnFechaResul = DATE(ldAnoH, ldMesH, ldDiaH) - DATE(ldAnoD, ldMesD, ldDiaD) marca error.... "function argument value type, or count is invalid".. revialso

    ResponderEliminar
    Respuestas
    1. Hola. Ohh si! Veo que hay un error en el codigo... copie mal cuando hice la entrada y no revise. Me disculpo. En cuanto tenga un tiempito, lo soluciono! Gracias por la observacion. He estado bastante fuera del campo hehe! XD

      Saludos! :)

      Eliminar
  2. Y nunca encontró la corrección del erro XD


    Atte
    Jony

    ResponderEliminar