Power Builder - Calculo de Edad en DW

 
Vista:

Calculo de Edad en DW

Publicado por Jery (30 intervenciones) el 04/11/2005 21:22:10
Saludos a todos amigos listeros, necesito calcular la edad segun la fecha ejemplo si digito 28/04/1985 debe arrojarme en una caja 20 este es el coidgo que me calcula la edad:

Date ld_FecNac, ld_FecHoy
Long ll_Year

ld_FecHoy = Today()
ld_FecNac = Date(em_fecnac.text)

ll_Year = Year(ld_FecHoy) - Year(ld_FecNac)

Sle_edad.Text = String(ll_Year)

El problema no es el codigo por q me sale correcto utilizando un EditMask (em_fecnac) donde coloco la fecha de nacimiento.y el SingleLineEdit (sle_edad) donde me devuelve la edad segun la fecha indicada solo que yo tengo un DW donde tengo una columna fec_naciemiento y quiera q al hacer enter se calcule la edad osea lo mismo q hace ese codigo, mejor dicho como implemento ese codigo para mi DW

Espero q me puedan 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:Calculo de Edad en DW

Publicado por amilcar (327 intervenciones) el 04/11/2005 21:49:11
hola lo q puedes hacer es hacer una funcion con tu codigo, y en el evento itemchanged puedes poner algo asi

if dwo_name="fec_naciemiento) then
long ll_edad
ll_edad=f_calculo_de_edad) // o tu script
this.setitem(row,"campo_edad",ll_edad)
end if

un saludo desde argentina
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:Calculo de Edad en DW

Publicado por amilcar (327 intervenciones) el 04/11/2005 21:52:31
ava va una formula de edad sacado de la web de f_ponte

$PBExportHeader$f_fecha_to_edad.srf
global type f_fecha_to_edad from function_object
end type

forward prototypes
global function long f_fecha_to_edad (date as_fnacimiento)
end prototypes

global function long f_fecha_to_edad (date as_fnacimiento);///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Autor: Fernando Ponte Chamorro Fecha: (27/08/2001)
//
// E-mail: [email protected]
//
// Versión: 6.5
//
// Función: f_fecha_to_edad
//
// Descripción: Retorna la edad a una fecha de nacimiento
//
// Ambito: Public
//
// Argumentos: as_fnacimiento {Date fecha de nacimiento pasado como valor}
//
// Retorna: long {Edad}
//
// Notas:
//
// Ejemplo: messagebox("",f_fecha_to_edad(date("09/01/63")))
//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Anterior
//long anos
//anos = (year(today()) - year( as_fnacimiento ))
//if month(today()) < month( as_fnacimiento ) then anos -= 1
//if day( today()) < day( as_fnacimiento ) then anos -= 1
//return anos

// Mejora realizada por Elena García 08/07/03
long anos
anos = (year(today()) - year( as_fnacimiento ))
if month(today()) < month( as_fnacimiento ) then anos -= 1
if month(today()) = month( as_fnacimiento ) and day( today()) < day( as_fnacimiento ) then anos -= 1
return anos
end function
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:Calculo de Edad en DW

Publicado por Jery (30 intervenciones) el 05/11/2005 01:05:56
Hola Amilcar gracias por la funcion ya la hice y asi declaro en el evento ItemChanged de mi DW:

If dwo.name =" fec_nacimiento" Then
Long ll_edad

ll_edad = f_fecha_to_edad()
This.SetItem(Row,"edad_empleado", ll_edad)

End if

Y me ocurre el siguiente error

Error C0084: Bad number of arguments for function: f_fecha_ti_edad

Que estoy declarando mal o haciendo mal gracias
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:Calculo de Edad en DW

Publicado por Jancarlo (890 intervenciones) el 05/11/2005 04:03:20
Hola

Puedes colocar esto en un compute dentro de tu dw soo tines que reemplazar el campo fec_nacim.

string(if(date(left(string(fec_nacim,'dd/mm/yyyy'),6) + string(year(today()),'0000'))>=date(string(today(),'dd/mm/yyyy')),year(today()) - year(fec_nacim),(year(today()) - year(fec_nacim)) - 1 )) + ' años'

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

RE:Calculo de Edad en DW

Publicado por Jancarlo (890 intervenciones) el 05/11/2005 14:57:14
Hola Jery

El anterior que mande tenia un pequeño error, te puse el signo de compración (>=) al revés cuando deberia ser (<=)

string(if(date(left(string(fech_naci_fam,'dd/mm/yyyy'),6) + string(year(today()),'0000'))<=date(string(today(),'dd/mm/yyyy')),year(today()) - year(fech_naci_fam),(year(today()) - year(fech_naci_fam)) - 1 )) + ' años'

Disculpa ! es de humanos equivocarse.

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

RE:Calculo de Edad en DW

Publicado por Jery (30 intervenciones) el 05/11/2005 17:00:42
No te preocupes Jancarlo, gracias por el codigo lo probare de ahi te digo gracias
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:Calculo de Edad en DW

Publicado por amilcar (327 intervenciones) el 07/11/2005 23:27:17
hola , si decides usar la funcion para obtener la edad te esta faltando pasarle el argumento a la funcion, el cual seria la fecha q deseas evalurar,
este es de tipo date
tendria q ser algo asi

date ld_fecha
long ll_edad

ld_fecha=date(em_1.text)

ll_edad = f_fecha_to_edad(ld_fecha)

This.SetItem(Row,"edad_empleado", ll_edad)

un saludo desde argentina
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar