Función para determinar la edad ?

Función para determinar la edad ?

Postby Armando » Mon Jan 14, 2008 2:36 am

Amigos:

Alguien tiene desarrollada una función para determinar la edad en Años, meses y dias que quiera compartir ?

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3235
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Postby FWHISHOW » Mon Jan 14, 2008 10:10 am

Esta função retorna a idade.

*****************************************
static function RetIdade(dNasc)
*****************************************
local a1,a2,a3,idade
a1:=year(date())-1
a2:=year(nasc)
a3:=ctod(strzero(day(nasc),2)+"/"+strzero(month(nasc),2)+"/"+strzero(year(date()),4))
idade:=(a1-a2)
if a3<=date()
idade++
endif
return(idade)

Espero ter ajudado.
FWHISHOW
 
Posts: 80
Joined: Thu Nov 29, 2007 2:01 pm

Postby Armando » Mon Jan 14, 2008 3:29 pm

FWHISHOW:

Muito obrigado pela ajuda.

Necesito conocer la edad en Años, Meses y Dias y tu ejemplo solo
devuelve los Años.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3235
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Postby Kleyber » Mon Jan 14, 2008 3:52 pm

Hola Armando,

Esta función no es mia, pero creo que puede ayudarte:
Code: Select all  Expand view  RUN
//----------------------------------------------------------------------------//
Function Ano_Mes_Dia(WDATA1,WDATA2)
// Cálculo da Idade
//----------------------------------------------------------------------------//
Local WTOTANOS:=WTOTMESES:=WTOTDIAS:=ctod(space(8))
Local WDIAANT:=WMESANT:=WANOANT:=WDATAANT:=ctod(space(8))

IF VAL( SUBS(DTOC(WDATA2),4,2) + SUBS(DTOC(WDATA2),1,2) ) >= ;   
   VAL( SUBS(DTOC(WDATA1),4,2) + SUBS(DTOC(WDATA1),1,2) )   
   WTOTANOS:= YEAR(WDATA2) - YEAR(WDATA1)   
   WTOTMESES:=MONTH(WDATA2) - ;             
   MONTH(WDATA1) - ;             
   IF(DAY(WDATA2)>=DAY(WDATA1),0,1)
ELSE   
   WTOTANOS:= (YEAR(WDATA2) - YEAR(WDATA1)) - 1   
   WTOTMESES:=( MONTH(WDATA2)+12 ) - ;             
   MONTH(WDATA1)        - ;             
   IF(DAY(WDATA2)>=DAY(WDATA1),0,1)
ENDIF
IF DAY(WDATA2) >= DAY(WDATA1)   
   WTOTDIAS:=DAY(WDATA2)-DAY(WDATA1)
ELSE
   IF MONTH(WDATA2)=1     
      WMESANT:= 12     
      WANOANT:= YEAR(WDATA2)-1   
   ELSE     
      WMESANT:= MONTH(WDATA2)-1     
      WANOANT:= YEAR(WDATA2)   
   ENDIF
   DO CASE   
   CASE DAY(WDATA1)=31     
        DO CASE     
        CASE WMESANT=2         
             IF MOD(WANOANT,4)=0           
                WDIAANT:=29         
             ELSE           
                WDIAANT:=28         
             ENDIF     
        CASE WMESANT=4 .OR. WMESANT=6 .OR. WMESANT=9 .OR. WMESANT=11         
             WDIAANT:=30     
        OTHE         
             WDIAANT:=DAY(WDATA1)     
        ENDCASE
   CASE DAY(WDATA1)=30     
        IF WMESANT=2         
           IF MOD(WANOANT,4)=0           
              WDIAANT:=29         
           ELSE           
              WDIAANT:=28         
           ENDIF     
        ELSE         
           WDIAANT:=DAY(WDATA1)     
        ENDIF   
   ENDCASE
   WDATAANT:=CTOD( STRZERO(WDIAANT,2,0)+"/"+ ;                   
   STRZERO(WMESANT,2,0)+"/"+ ;                   
   STRZERO(WANOANT,4,0) )   
   WTOTDIAS:= WDATA2 - WDATAANT
ENDIF

RETURN ( ALLTRIM(STR(WTOTANOS,4,0)) +" Ano(s)")   + ;       
        ALLTRIM(STR(WTOTMESES,2,0))+" MES(es) e  "+ ;       
        ALLTRIM(STR(WTOTDIAS,2,0)) +" DIA(as)" )



Saludos,
Kleyber Derick

FWH / xHb / xDevStudio / SQLLIB
User avatar
Kleyber
 
Posts: 581
Joined: Tue Oct 11, 2005 11:28 am
Location: São Luiz, Brasil

Postby Armando » Mon Jan 14, 2008 5:47 pm

Kleyber:

Creo que eso es lo que necesito.

Muchas gracias

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3235
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 46 guests