FoxPro/Visual FoxPro - calcular la edad automatica. al ingresar la fecha nacimiento

 
Vista:
sin imagen de perfil

calcular la edad automatica. al ingresar la fecha nacimiento

Publicado por Elder Lenin (6 intervenciones) el 22/10/2014 19:26:19
hola mis estimados expertos de la wep. ayudenme. kiero que la edad. me la calcule al introducir la fecha de nacimiento. en la base de datos. de mi formulario. tengo un pequeno formulario en visual foxpro 9.0 con los siguientes campos. nombre, comunidad,sexo,fecha de nacimiento, edad,afiliado. por favor donde tengo que poner los codigos i programaciion. y cual es. ayudame que te ayurare dice jesus.
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
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

calcular la edad automatica. al ingresar la fecha nacimiento

Publicado por Fidel José (558 intervenciones) el 22/10/2014 22:25:31
Una idea.
Crea un método en tu formulario llamado "Calcedad" con el código siguiente:
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
*PROCEDURE calcedad
LPARAMETERS tdFecha1,tdFecha2
***************************
*tdFecha1 es la fecha inferior
*tdFecha2 es la fecha superior o Date()
* Devueve un objeto Empty (objresp)
* con 4 propiedades:
* Edad, Años, Meses, Dias
************************************
LOCAL nDetanos,nMeses,nDias,cTiempo,;
	cAno,cmes,cdia,zDias1,zDias2,;
	xmMes,xmAno
IF VARTYPE(tdFecha1)#"D"
	MESSAGEBOX("El primer parámetro debe ser tipo Date.")
	RETURN null
ENDIF
 
if VARTYPE(tdFecha2)#"D" OR EMPTY(tdFecha2)
	tdFecha2 =Date()
ENDIF
IF tdFecha1 > tdFecha2
	RETURN null
ENDIF
 
nDetanos =Year(tdFecha2)-Year(tdFecha1) - 1
nMeses =12-Month(tdFecha1) + Month(tdFecha2) - 1
IF DAY(tdFecha2)>=DAY(tdFecha1)
	nMeses=nMeses + 1
ENDIF
 
if nMeses >= 12
	nMeses =nMeses - 12
	nDetanos =nDetanos + 1
endif
 
if Day(tdFecha1)=Day(tdFecha2)
	nDias =0
else
	zDias1 =Day(tdFecha1)
	zDias2 =Day(tdFecha2)
	if Day(tdFecha2) > Day(tdFecha1)
		nDias =Day(tdFecha2)-Day(tdFecha1)
	else
		xmMes =month(tdFecha2)-1
		xmano =Year(tdFecha2)
		if xmMes = 0
			xmMes =12
			xmano =xmano-1
		endif
 
		DO case
			CASE INLIST(xmMes,1,3,5,7,8,10,12)
				zFin1=31
			CASE INLIST(xmMes,4,6,9,11)
				zFin1=30
			OTHERWISE
				zFin1=IIF(EMPTY(DATE(xmAno,xmMes,29)),28,29)
		ENDCASE
 
		nDias =Zdias2 + Zfin1 - Zdias1
	endif
endif
cano =iif(nDetanos>1," Años "," Año ")
cmes =iif(nmeses>1," Meses "," Mes ")
cdia =iif(ndias>1," Días "," Día ")
cTiempo =Ltrim(str(nDetanos))+cano+ltrim(str(nmeses))+cmes+ltrim(str(ndias))+cdia
 
* Crea el objeto de respuesta
objResp=NEWOBJECT("Empty")
ADDPROPERTY(objResp,"Edad",cTiempo)
ADDPROPERTY(objResp,"Años",nDetAnos)
ADDPROPERTY(objresp,"Meses",nMeses)
ADDPROPERTY(objresp,"Dias",nDias)
REturn objResp

Luego, en el LostFocus del textbox donde ingresas la fecha de nacimiento (tiene que ser Format="D" y si no tiene ControlSource, o de todos modos, ponle como valor inicial .Value=Ctod("")

1
2
3
4
5
6
7
8
9
10
11
12
IF !EMPTY(this.Value)
	LOCAL objResp
 
	objResp=thisform.calcedad(this.Value)
	IF NOT ISNULL(objResp)
		MESSAGEBOX("Edad="+objResp.Edad+CHR(13);
			+"Años="+TRANSFORM(objResp.Años)+CHR(13);
			+"Meses="+TRANSFORM(objresp.meses)+CHR(13);
			+"Días="+TRANSFORM(objresp.dias))
	ENDIF
	objresp=null
ENDIF
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
sin imagen de perfil

calcular la edad automatica. al ingresar la fecha nacimiento

Publicado por Ernesto (4623 intervenciones) el 28/10/2014 22:32:26
Checa esta funcion ....

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-----------------------------------------------------
* FUNCTION Edad(tdNac, tdHoy)
*-----------------------------------------------------
* Calcula la edad pasando como parámetros:
* tdNac = Fecha de nacimiento
* tdHoy = Fecha a la cual se calcula la edad.
* Por defecto toma la fecha actual.
*-----------------------------------------------------
FUNCTION Edad(tdNac, tdHoy)
LOCAL lnAnio
IF EMPTY(tdHoy)
tdHoy = DATE()
ENDIF
lnAnio = YEAR(tdHoy) - YEAR(tdNac)
IF GOMONTH(tdNac, 12 * lnAnio) > tdHoy
lnAnio = lnAnio - 1
ENDIF
RETURN lnAnio
ENDFUNC


Suerte !!!
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
sin imagen de perfil
Val: 313
Bronce
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

calcular la edad automatica. al ingresar la fecha nacimiento

Publicado por jose (166 intervenciones) el 27/07/2015 05:04:49
POR FAVOR , ALGUIEN QUE SEPA PROGRAMARLO, NECESITO QUE UNA VEZ GRABADA LA EDAD , SE MANTENGA ACTUALIZADA SIN NECESIDAD DE INGRESAR A ACTUALIZAR PERSONA POR PERSONA TODOS LOS MESES.-
POR EJEMPLO COMO HACER ALGUN UPDATE AUTOMÁTICO.-
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