FoxPro/Visual FoxPro - ayuda con edad

   
Vista:

ayuda con edad

Publicado por eladio (29 intervenciones) el 27/11/2007 18:24:59
hola amigos , tengo el sgte. problema: en un cuadro de texto tengo la fecha de nacimiento de una persona y quiero q me saque la edad en otro cuadro de texto , agradeceria si me pueden ayudar
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:ayuda con edad

Publicado por Plinio (7771 intervenciones) el 27/11/2007 20:13:32
http://www.portalfox.com/index.php?name=News&file=article&sid=63&mode=nested&order=0&thold=0

http://www.portalfox.com/index.php?name=News&file=article&sid=1181&mode=nested&order=0&thold=0
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:ayuda con edad

Publicado por enrique (1041 intervenciones) el 27/11/2007 20:16:23
en el Lostfocus de primer cuadro de texto pone

thisform.text2.value = int((date() - this.value) /365)
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:ayuda con edad

Publicado por eladio (29 intervenciones) el 27/11/2007 22:05:07
muchas gracias amigos
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:ayuda con edad

Publicado por Luighi (105 intervenciones) el 28/11/2007 03:54:43
la fórmula parece buena
pero está mucho mejor la intención
analizemos:
? int((date()-this.value)/365)
ok, funciona
pero, supongamos que sea hoy {^2007-03-27}
y vamos a ingresar el año de nacimiento de alguien: {^1985-03-29}
al ejecutar la fórmula:
? int(({^2007-03-27}-{^1985-03-29})/365)
nos arrojará 22 años
cuando realmente para que tenga 22 años faltan aún un par de días
osea, la respuesta debería ser 21
quizás un día o dos no importa
pero y que tal si alguien nos pide un programita que nos avise el momento justo en que una persona cumple años y así lanzarle un regalito y dicho sea de paso las mejores felicitaciones?
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:ayuda con edad

Publicado por Ernesto Hernandez (4632 intervenciones) el 28/11/2007 06:02:34
pon esto en el lostfocus de la caja de texto donde captures la fecha de nacimiento y crea la caja de texto txtedad .

Suerte

Z_NACIMIENTO=DTOC(THIS.Value )
FEC2=DATE()
FEC1=THIS.Value
DIFERENCIA=FEC2-FEC1
SUMAR=INT(DIFERENCIA/1461)
VAR1=DIFERENCIA/365
AÑOS=INT(VAR1)
VAR1=VAR1-AÑOS
VAR1=VAR1*12
MESES=INT(VAR1)
VAR1=(VAR1-MESES)*30
DIAS=(INT(VAR1))-SUMAR
THISFORM.txtEdad.Value = (AÑOS)
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:ayuda con edad

Publicado por Ernesto Hernandez (4632 intervenciones) el 28/11/2007 06:38:05
este tambien funciona compañero

* HowOld.prg
* Toma dos fechas o fecha-hora y devuelve la diferencia como un string
de *caracteres
* de nn años y nn Meses devuelve NULL para fechas invalidas

LPARAMETERS pdDate1, pdDate2

* Declaración de variables
LOCAL lnYears, lnMonths, ldDate1, ldDate2, lcType, lcReturn
* Set the data type of lcReturn to Character
lcReturn = ""
* ahora seteamos su valor a .NULL.
lcReturn = .NULL.
* chequeamos el tipo de datos para el primer parametro
lcType = TYPE("pdDate1")
IF NOT lcType $ "DT"
* Illegal type for date
RETURN lcReturn
ENDIF
* Chequeamos el segundo
lcType = TYPE("pdDate2")
IF NOT lcType $ "DT"
* Illegal type for date
RETURN lcReturn
ENDIF
* Toma la fecha mas alta
ldDate1 = MAX(pdDate1,pdDate2)
* Toma la fecha mas baja
ldDate2 = MIN(pdDate1,pdDate2)
* Ahora calculamos los años y los meses
* comienza con cero años y cero meses
lnYears = 0
lnMonths = 0
* se mueve para atrás ldDate2 por 1 mes
ldDate2 = GOMONTH(ldDate2,1)
* Loop as long as ldDate1 is later than ldDate2
DO WHILE ldDate2 < ldDate1
* Agrega uno a lnMonths
lnMonths = lnMonths + 1
* Chequea por el paso de los años
IF lnMonths = 12
* incrementa los años
lnYears = lnYears + 1
* cero a los meses
lnMonths = 0
ENDIF
* Incrementa la fecha primitiva
ldDate2 = GOMONTH(ldDate2,1)
ENDDO
* Construye la cadena de retorno
IF lnYears > 0
* pone el numero de años
lcReturn = ALLTRIM(STR(lnYears)) + " Año"
IF lnYears > 1
* si hay mas de un año agrega la s
lcReturn = lcReturn + "s"
ENDIF
ENDIF
* agrega uno al numero de meses
lcReturn = lcReturn + " and " + ALLTRIM(STR(lnMonths)) + " Mes"
IF lnMonths <> 1
* si meses no es uno agrega la es
lcReturn = lcReturn + "es"
ENDIF
* devuelve la cadena
RETURN lcReturn
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