Clique abaixo para nos ajudar
Login

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
8 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 8 Visitantes :: 2 Motores de busca

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
Últimos assuntos
» Alterar uma palavra num arquivo de texto
Ontem à(s) 12:02 por Teseu

» Buscar endereço por CEP
3/12/2016, 19:59 por pedrossian

» USAR WEBSERVICE NO VFP9
2/12/2016, 09:50 por AJC

» BANIMENTO DE USUARIO
17/11/2016, 08:31 por FAF

» Impressora Ticket
15/11/2016, 09:20 por clima238

» Gráfico
9/11/2016, 10:43 por hidroluz

» TRANSPOR TABELA
9/11/2016, 10:34 por hidroluz

» MUDANÇA DO .DBF PARA POTSGREE
9/11/2016, 09:12 por AJC

» Website com videoaulas sobre linguagens de programação
8/11/2016, 09:56 por JLDR

» Parceria para desenvolvimento de template em Wordpress
7/11/2016, 19:15 por mindix

» Data fica invertida na planilha que é gerada via programa.
27/10/2016, 11:00 por Linghston

» Maximizar report direto do menu
21/10/2016, 20:48 por Rosangela Pires

» Fechar form com tempo
21/10/2016, 10:15 por Rosangela Pires

» URGENTE: Ajuda com impressora ELGIN-L42
14/10/2016, 09:53 por megasoft

» Opções para gerar NF-e
10/10/2016, 09:07 por mavsinfo

» Google Maps
8/10/2016, 15:08 por Rosangela Pires

» Mysql
5/10/2016, 11:22 por Marcos Guedes

» Acessando Banco em MYSQL de um projeto WORDPRESS
3/10/2016, 10:58 por Marcos Guedes

» OPTION SELECT MOSTRAR CAMPOS QUASE PRONTO
26/9/2016, 21:09 por BobKuspe

» Pesquisa em grid
14/9/2016, 09:24 por AJC

Alterar uma palavra num arquivo de texto

5/12/2016, 12:02 por Teseu

Olá prezados colegas de programação!

Este é eu primeiro post no fórum e gostaria de poder …

Comentários: 0

Buscar endereço por CEP

3/12/2016, 19:59 por pedrossian

Caros amigos, meu código para buscar endereço pelo CEP não funciona mais.
Alguém pode me …

Comentários: 0

USAR WEBSERVICE NO VFP9

2/12/2016, 09:50 por AJC

Pessoal, preciso de um material ou livro que me traga instruções como
usar a consumação de …

Comentários: 0

BANIMENTO DE USUARIO

13/11/2016, 16:21 por FAF

A usuária ROSANGELA PIRES ao tentar acessar o Forum obtem sempre a mensagem de BANIMENTO.
A mesma …

Comentários: 3

Impressora Ticket

15/11/2016, 09:20 por clima238

Bom dia,
Por favor alguém me explique porque o código abaixo imprime no ecrã em vez do printer: …

Comentários: 0

Estatísticas
Temos 6960 usuários registrados
O último usuário registrado atende pelo nome de Maycon Hersing

Os nossos membros postaram um total de 17118 mensagens em 2576 assuntos

Metodo para calcular idade - <

Página 1 de 4 1, 2, 3, 4  Seguinte

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Resolvido Metodo para calcular idade - <

Mensagem por bruno em 29/1/2010, 11:08

Pessoal

Pesquisei na busca mas nao encontrei nada.

Como posso fazer um calculo de idade, naceu dia tal e ate a data de hoje, quantos anos, meses e dias teria a pessoa.

Achei uma rotina mas em alguns casos da errado, nao esta funcionando corretamente.


Bruno

bruno
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por hugo em 29/1/2010, 11:24

amigao, to na correria, mais ate tenho isto gravado em algum lugar

peguei na net mesmo e funcionou perfeito

logo logo alguem posta pra ti ai, se nao aparecer procuro aqui com calma
depois

_________________
"A tristeza é a falta de alegria, mais sem ela eu não poderia entender a alegria do fato de que a felicidade existe!"
Helio Leites - [Você precisa estar registrado e conectado para ver este link.]

hugo
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por Marcos Guedes em 29/1/2010, 11:36

Olá, Bruno!
Não sei ao certo o que você precisa, então criei esta rotina.
Espero que o ajude.

Código:
LOCAL objidade AS OBJECT
LOCAL datanasceu AS DATE
LOCAL dataatual AS DATE
*!*
m.objidade = NEWOBJECT("idade")
m.datanasceu = CTOD("01/02/1988")
m.dataatual = DATE()
*!*
CLEAR
?"Idade (total anos): "
?? m.objidade.retornaidadeanos(m.datanasceu, m.dataatual)

?"Idade (total meses): "
?? m.objidade.retornaidademeses(m.datanasceu, m.dataatual)

?"Idade (total dias): "
?? m.objidade.retornaidadediastotal(m.datanasceu, m.dataatual)

?"Idade (dias restantes): "
?? m.objidade.retornaidadediasrestante(m.datanasceu, m.dataatual)

?"Idade (por extenso): "
?? m.objidade.dataextenso(m.datanasceu, m.dataatual)

DEFINE CLASS idade AS CUSTOM

   *!* Retorna a idade (apenas anos)
   FUNCTION retornaidadeanos AS INTEGER
      LPARAMETERS datanascimento AS DATE, dataatual AS DATE
      *!*
      LOCAL idade AS INTEGER
      m.idade = INT((m.dataatual-m.datanascimento)/365)
      *!*
      IF (CTOD(LEFT(DTOC(m.datanascimento),6)+STR(YEAR(m.dataatual)))>m.dataatual)
         m.idade = m.idade - 1
      ENDIF
      *!*
      RETURN m.idade
   ENDFUNC

   FUNCTION retornaidademeses AS INTEGER
      LPARAMETERS datanascimento AS DATE, dataatual AS DATE
      *!*
      LOCAL idade AS INTEGER
      m.idade = INT((m.dataatual-m.datanascimento)/365)
      *!*
      IF (CTOD(LEFT(DTOC(m.datanascimento),6)+STR(YEAR(m.dataatual)))>m.dataatual)
         m.idade = m.idade - 1
      ENDIF
      *!*
      RETURN m.idade*12
   ENDFUNC

   FUNCTION retornaidadediastotal AS INTEGER
      LPARAMETERS datanascimento AS DATE, dataatual AS DATE
      *!*
      LOCAL idade AS INTEGER
      LOCAL aniversario AS DATE
      *!*
      m.idade = m.dataatual-m.datanascimento
      *!*
      RETURN m.idade*12
   ENDFUNC

   FUNCTION retornaidadediasrestante AS INTEGER
      LPARAMETERS datanascimento AS DATE, dataatual AS DATE
      *!*
      LOCAL idade AS INTEGER
      LOCAL aniversario AS DATE
      *!*
      m.idade = m.dataatual-m.datanascimento
      m.aniversario = CTOD(LEFT(DTOC(m.datanascimento),6)+STR(YEAR(m.dataatual)))
      *!*
      m.idade = m.aniversario - m.dataatual
      *!*
      RETURN m.idade
   ENDFUNC

   FUNCTION dataextenso AS STRING
      LPARAMETERS datanascimento AS DATE, dataatual AS DATE
      *!*
      LOCAL aniversarioAtual as Date
      LOCAL aniversarioAnterior as Date
      LOCAL anos as String
      LOCAL meses as String
      LOCAL dias as Integer
      *!*
      m.anos = ALLTRIM(STR(this.retornaidadeanos(m.datanascimento, m.dataatual)))
      m.aniversarioAtual = CTOD(LEFT(DTOC(m.datanascimento),6)+STR(YEAR(m.dataatual)))
      m.aniversarioAnterior = CTOD(LEFT(DTOC(m.datanascimento),6)+STR(YEAR(m.dataatual)-1))
      m.meses = ALLTRIM(STR(12-INT(((365-(m.aniversarioAtual-m.dataatual))/12)/30)))
      m.dias = ALLTRIM(STR(m.aniversarioAtual-m.aniversarioAnterior - this.retornaidadediasrestante(m.datanascimento, m.dataatual)))
      *!*
      RETURN m.anos+" anos, " + m.meses + " meses e " + m.dias + " dias."
   ENDFUNC

ENDDEFINE

Resolve?

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por bruno em 1/2/2010, 13:18

Marcos

Seria isso mesmo.
Mas olha só.
Neste exemplo se a pessoa nasceu 01/02/2009 nao era para dar o resultado de 1 ano.

Na sua rotina fica 1 ano, 11 meses, 395 dias.

Bruno

bruno
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por Marcos Guedes em 1/2/2010, 15:01

Veja se agora está corrido:
Código:
LOCAL objidade AS OBJECT
LOCAL datanasceu AS DATE
LOCAL dataatual AS DATE
*!*
m.objidade = NEWOBJECT("idade")
m.datanasceu = CTOD("01/02/2009")
m.dataatual = DATE()
*!*
CLEAR
?"Idade (total anos) - OK: "
?? m.objidade.retornaidadeanos(m.datanasceu, m.dataatual)

?"Idade (total meses): "
?? m.objidade.retornaidademeses(m.datanasceu, m.dataatual)

?"Idade (total dias) - OK: "
?? m.objidade.retornaidadediastotal(m.datanasceu, m.dataatual)

?"Idade (dias restantes) - OK: "
?? m.objidade.retornaidadediasrestante(m.datanasceu, m.dataatual)

?"Idade (por extenso): "
?? m.objidade.dataextenso(m.datanasceu, m.dataatual)

DEFINE CLASS idade AS CUSTOM

  *!* Retorna a idade (apenas anos)
  FUNCTION retornaidadeanos AS INTEGER
      LPARAMETERS datanascimento AS DATE, dataatual AS DATE
      *!*
      LOCAL idade AS INTEGER
      m.idade = INT((m.dataatual-m.datanascimento)/365)
      *!*
      RETURN m.idade
  ENDFUNC

  FUNCTION retornaidademeses AS INTEGER
      LPARAMETERS datanascimento AS DATE, dataatual AS DATE
      *!*
      LOCAL idade AS INTEGER
      m.idade = INT((m.dataatual-m.datanascimento)/365)
      *!*
      IF (CTOD(LEFT(DTOC(m.datanascimento),6)+STR(YEAR(m.dataatual)))>m.dataatual)
        m.idade = m.idade - 1
      ENDIF
      *!*
      RETURN m.idade*12
  ENDFUNC

  FUNCTION retornaidadediastotal AS INTEGER
      LPARAMETERS datanascimento AS DATE, dataatual AS DATE
      *!*
      LOCAL idade AS INTEGER
      LOCAL aniversario AS DATE
      *!*
      m.idade = m.dataatual-m.datanascimento
      *!*
      RETURN m.idade
  ENDFUNC

  FUNCTION retornaidadediasrestante AS INTEGER
      LPARAMETERS datanascimento AS DATE, dataatual AS DATE
      *!*
      LOCAL idade AS INTEGER
      LOCAL aniversario AS DATE
      *!*
      m.idade = m.dataatual-m.datanascimento
      m.aniversario = CTOD(LEFT(DTOC(m.datanascimento),6)+STR(YEAR(m.dataatual)))
      *!*
      m.idade = m.aniversario - m.dataatual
      *!*
      RETURN m.idade
  ENDFUNC

  FUNCTION dataextenso AS STRING
      LPARAMETERS datanascimento AS DATE, dataatual AS DATE
      *!*
      LOCAL aniversarioAtual as Date
      LOCAL aniversarioAnterior as Date
      LOCAL anos as String
      LOCAL meses as String
      LOCAL dias as Integer
      *!*
      m.anos = ALLTRIM(STR(this.retornaidadeanos(m.datanascimento, m.dataatual)))
      m.aniversarioAtual = CTOD(LEFT(DTOC(m.datanascimento),6)+STR(YEAR(m.dataatual)))
      m.aniversarioAnterior = CTOD(LEFT(DTOC(m.datanascimento),6)+STR(YEAR(m.dataatual)-1))
      m.meses = ALLTRIM(STR( 12-12-INT(((365-(m.aniversarioAtual-m.dataatual))/12)/30)+1 ))
      m.dias = this.retornaidadediastotal(m.datanascimento, m.dataatual)-365
      m.meses = INT(m.dias/30)
      m.dias = m.dias%30
      *!*
      m.meses = ALLTRIM(STR(m.meses))
      m.dias = ALLTRIM(STR(m.dias))
      *!*
      RETURN m.anos+" ano(s), " + m.meses + " mes(es) e " + m.dias + " dia(s)."
  ENDFUNC

ENDDEFINE

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por Marcos Guedes em 5/2/2010, 16:41

Resolveu, Bruno?

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por bruno em 8/2/2010, 16:41

Marcos

Me desculpe a demora

Tive alguns problemas

Olha só por exemplo tenho uma data de nascimento na tabela 01/05/2009, quando executo a rotina do calculo da idade me da 0 ano -2 meses e 8 dias.

Nao teria que dar pelo menos uns 9 meses???


Bruno

bruno
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por Marcos Guedes em 8/2/2010, 18:05

Isto com a nova atualização que postei?
What a Face

Irei testar novamente e posto aqui!

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por bruno em 9/2/2010, 12:22

Marcos

Sim, isto ocorre com o codigo que voce postou 1/2/2010, 16:01.

Dependendo da data estes meses variam

Bruno

bruno
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por Marcos Guedes em 10/2/2010, 15:30

Bruno, veja se funciona:
Código:
SET DATE british
SET CENTURY ON

LOCAL objidade AS OBJECT
LOCAL datanasceu AS DATE
LOCAL dataatual AS DATE
*!*
m.objidade = NEWOBJECT("idade")
m.datanasceu = CTOD("08/08/1987")
m.dataatual = DATE()
*!*
CLEAR
?"Idade (total dias): "
?? m.objidade.retornaidadediastotal(m.datanasceu, m.dataatual)

?"Idade (total meses): "
?? m.objidade.retornaidademeses(m.datanasceu, m.dataatual)

?"Idade (total anos): "
?? m.objidade.retornaidadeanos(m.datanasceu, m.dataatual)

?"Idade (por extenso): "
?? m.objidade.dataextenso(m.datanasceu, m.dataatual)

DEFINE CLASS idade AS CUSTOM

   *!* Retorna a idade (apenas anos)
   FUNCTION retornaidadeanos AS INTEGER
      LPARAMETERS datanascimento AS DATE, dataatual AS DATE
      *!*
      LOCAL dias AS INTEGER
      LOCAL idade as Integer
      *!*
      m.dias = THIS.retornaidadediastotal(m.datanascimento, m.dataatual)
      m.idade = INT(m.dias/365)
      *!*
      IF ( (MONTH(m.datanascimento)<MONTH(m.dataatual)) AND (YEAR(m.datanascimento)<YEAR(m.dataatual)) ) THEN
      m.idade = m.idade - 1
      ENDIF
      
      RETURN m.idade
   ENDFUNC

   FUNCTION retornaidademeses AS INTEGER
      LPARAMETERS datanascimento AS DATE, dataatual AS DATE
      *!*
      RETURN INT((m.dataatual-m.datanascimento)/30)
   ENDFUNC

   FUNCTION dataextenso AS STRING
      LPARAMETERS datanascimento AS DATE, dataatual AS DATE
      *!*
      LOCAL totaldias AS INTEGER
      LOCAL idadeextenso AS STRING
      LOCAL anos AS INTEGER
      LOCAL meses AS INTEGER
      LOCAL dias AS INTEGER
      LOCAL restante AS INTEGER
      *!*
      m.dias = THIS.retornaidadediastotal(m.datanascimento, m.dataatual)
      m.anos = INT(m.dias/365)

      IF (m.anos>0)
         m.restante = m.dias%365
      ELSE
         m.restante = m.dias
      ENDIF

      m.meses = INT(m.restante/30)


      IF (m.meses>0)
         m.restante = m.meses%30
      ENDIF

      m.dias = m.restante

      m.idadeextenso = ALLTRIM(STR(m.anos))
      *!*
      RETURN m.idadeextenso + " ano(s), " + ALLTRIM(STR(m.meses)) + " mes(es) e " + ALLTRIM(STR(m.dias)) + " dia(s)"
   ENDFUNC

   FUNCTION retornaidadediastotal AS INTEGER
      LPARAMETERS datainicio AS DATE, datafim AS DATE
      *!*
      LOCAL totaldias AS INTEGER
      m.totaldias = 0
      *!*
      IF (m.datainicio>=m.datafim) THEN
         RETURN 0
      ENDIF
      *!*
      DO WHILE (m.datainicio<m.datafim)
         m.totaldias = m.totaldias + 1
         m.datainicio = m.datainicio + 1
      ENDDO

      RETURN m.totaldias
   ENDFUNC

ENDDEFINE

Testei com algumas datas e funcionou normalmente.

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por bruno em 11/2/2010, 10:28

Marcos

Continua dando erro.

O que puder notar sobre as pesquisas que estou fazendo sobre o assunto, e preciso prever o calculo do ano bicesto.

Achei algumas rotinas para ouras linguagens e estou tentando entender para ver se da para transformar em vfp.

Bruno

bruno
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por Marcos Guedes em 11/2/2010, 10:47

Tenta estudar a rotina que postei pois o cálculo de dias está correto.
Irei continuar estudando uma forma de corrigir as falhas.

Hugo, encotrasse a rotina que dissestes ter?!

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por hugo em 11/2/2010, 14:44

[Você precisa estar registrado e conectado para ver este link.] escreveu:Tenta estudar a rotina que postei pois o cálculo de dias está correto.
Irei continuar estudando uma forma de corrigir as falhas.

Hugo, encotrasse a rotina que dissestes ter?!

nao procurei

mais se nao achar neste final de semana eu faco uma
(do meu jeito, la .prg )

hehehehhe

_________________
"A tristeza é a falta de alegria, mais sem ela eu não poderia entender a alegria do fato de que a felicidade existe!"
Helio Leites - [Você precisa estar registrado e conectado para ver este link.]

hugo
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por hugo em 11/2/2010, 18:17

galera, seguinte, to na maior preguiça de achar esta parada,
achei mais facil fazer aqui

fiz aqui e funfou legal

confiram ai

valeu, ( espero ter ajudado )

Código:
* by jocelem HUGO - CODIGO FREE - 11/02/2010
SET DATE BRITISH
SET CENTURY on
m.dtnasc=CTOD("06/08/1971")
m.diaatu=m.dtnasc
m.dias=0
m.anos=0
m.mes=0
DO WHILE m.diaatu<DATE()
   m.dias=m.dias+1
   m.diaatu=m.diaatu+1
   IF VAL(left(DTOC(m.diaatu),2))=VAL(left(DTOC(m.dtnasc),2))
      m.mes=m.mes+1
      m.dias=0
      IF m.mes=12
         m.anos=m.anos+1
         m.mes=0
      ENDIF
   ENDIF
enddo
wait wind "Sua idade eh: " + ALLTRIM(STR(m.anos)) + " anos, " + ALLTRIM(STR(m.mes)) + " mes(es) e " + ALLTRIM(STR(m.dias)) + " dias!"

Wink

Exercicio gostosinho de logica! hehe

Atende ai Bruno?


Última edição por hugo em 11/2/2010, 19:05, editado 1 vez(es)

_________________
"A tristeza é a falta de alegria, mais sem ela eu não poderia entender a alegria do fato de que a felicidade existe!"
Helio Leites - [Você precisa estar registrado e conectado para ver este link.]

hugo
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por Nelson Arcas em 11/2/2010, 18:39

Fiz um código aqui e funcionou ficou um pouco extenso mais quem quizer pode melhorar


Código:
*** Elaborado por Nelson 11/02/2010

SET DATE british
public m.nascimento as Date, m.ltexto as String

*** Testei com um formulario e funciou corretamente so aqui que estou colocando dessa forma para***
*** na gerar problema **

m.nascimento = {^1984-03-09}

** Chamo a procedure **
DO calcula_idade WITH m.nascimento


WAIT WINDOW m.ltexto



PROCEDURE calcula_idade

   *** Parametro de Entrada ****
   PARAMETERS lnasceu

   *** Variaveis utilizadas
   LOCAL m.dtnasceu AS DATE, m.hoje AS DATE, m.meses1 AS DOUBLE,;
      m.meses2 AS DOUBLE, m.meses3 AS DOUBLE, m.anos AS DOUBLE,;
      m.meses AS DOUBLE,m.auxdata AS Date, m.auxndias as Double

   *** Atribuindo os valores as variaveis ***
   m.dtnasceu=lnasceu
   m.hoje=DATE()

   *** Transformando o intervalo do periodo em meses
   m.meses1= (YEAR(m.hoje)-YEAR(m.dtnasceu))*12

   *** Verifica se o mês que está sendo analisado
   IF MONTH(m.dtnasceu)<=MONTH(m.hoje)
      m.meses2=(MONTH(m.dtnasceu)-MONTH(m.hoje))*-1
   ELSE
      m.meses2=(MONTH(m.hoje)-MONTH(m.dtnasceu))
   ENDIF

   *** Efetua operação para achar o numero de anos correto ***

   m.meses3= m.meses1+m.meses2

   ** Acha o Inteiro do ano ***
   m.anos= INT(m.meses3/12)

   ** Acha os Meses ***
   IF DAY(m.hoje)>= DAY(m.dtnasceu)
      m.meses= MOD(m.meses3,INT(m.meses3/12))
   ELSE
      m.meses= MOD(m.meses3,INT(m.meses3/12))-1
   ENDIF

   *** Acho os dias ***
   IF DAY(m.hoje)>= DAY(m.dtnasceu)
      m.dias = DAY(m.hoje)-DAY(m.dtnasceu)
   ELSE
      m.auxdata = GOMONTH(m.hoje,-1)
      m.dias = (m.hoje-m.auxdata)-1
   ENDIF

*** Monta o texto
m.ltexto= IIF(m.anos>=0,ALLTRIM(STR(m.anos,3,0))+IIF(m.anos=1,' ano ',' anos '),'')
m.ltexto= (m.ltexto)+IIF(m.meses>=0,ALLTRIM(STR(m.meses,2,0))+IIF(m.meses=1,' mês ',' meses '),'')
m.ltexto= (m.ltexto)+IIF(m.dias>=0,ALLTRIM(STR(m.dias,2,0))+IIF(m.dias=1,' dia ',' dias '),'')   

   RETURN (m.ltexto)

Nelson Arcas
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por Marcos Guedes em 11/2/2010, 18:49

Obrigado pela ajuda, Hugo e Nelson!

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por bruno em 12/2/2010, 08:26

Pessoal

Obrigado pela grande ajudar que todos estao me dando neste caso.

Quanto ao codigo do Nelson, esta ocorrendo um erro aqui.

Troquei este comando

m.nascimento = {^1984-03-09} por

m.nascimento = THISFORM.TXTDTNASC.VALUE

E ocorre erro aqui.

** Acha os Meses ***
IF DAY(m.hoje)>= DAY(m.dtnasceu)
m.meses= MOD(m.meses3,INT(m.meses3/12))
ELSE
m.meses= MOD(m.meses3,INT(m.meses3/12))-1
ENDIF
nesta linha em destaque de azul


Bruno

bruno
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por Marcos Guedes em 12/2/2010, 08:36

Bruno, você poderia dizer qual a mensagem de erro?
Acredito que seu textbox esteja devolvendo string, então precisa alterar:
Código:
m.nascimento = THISFORM.TXTDTNASC.VALUE

para

Código:
m.nascimento = CTOD(THISFORM.TXTDTNASC.VALUE)

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por Nelson Arcas em 12/2/2010, 09:42

Bruno altere o codigo como o Marcos falou para

m.nascimento = CTOD(THISFORM.TXTDTNASC.VALUE)

Nelson Arcas
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por hugo em 12/2/2010, 11:01

bruno

alterei o codigo que postei para mostrar o resultado exatamente
igual ao do nelson, troquei dois comandos

confira, confirme por favor se funcionou

obrigado!

_________________
"A tristeza é a falta de alegria, mais sem ela eu não poderia entender a alegria do fato de que a felicidade existe!"
Helio Leites - [Você precisa estar registrado e conectado para ver este link.]

hugo
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por bruno em 12/2/2010, 11:06

Postei uma resposta e nao esta aparecendo, mas o erro que dava primeiro era esse

Cannot divide by 0.

Referente a linha em destaque azul

Huho

Nao achei seu codigo alterado?

Bruno

bruno
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por Marcos Guedes em 12/2/2010, 11:18

[Você precisa estar registrado e conectado para ver este link.] escreveu:Nao achei seu codigo alterado?
Acesse:
[Você precisa estar registrado e conectado para ver este link.]

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por bruno em 12/2/2010, 11:58

Pessoal

Quanto ao codigo esta resolvido.
Muito Obrigado a todos que se dispuseram a ajudar.

Uma questão que ocorre em meu form é o seguinte, apos colocar este codigo.

No metodo LOSTFOCUS do THISFORM.TXTDTNASC.VALUE coloquei (Thisform.Calcula_Idade), criei este metodo no form e coloquei o codigo do Hugo, por ser menor. (mas todos atendem a necessidade).

Bem, funciona, o que ocorre que que quando clico no botão proximo para mostrar o proximo registro o mesmo deve alterar estes dados conforme a data de nascimento, ate ai esta fazendo, mas quando chegar no final do arquivo trava o formulario e o mouse fica com a ampulheta, preciso dar ctrl+alt+del para encerrar.

Aqui esta parte do codigo, que peguei na apostila.

Código:
...
CASE UPPER(cDirecao) = "PROXIMO"
with thisform
  if not eof()
    skip +1
    .status=6   
    if eof()
      go bottom
      messagebox(" Final de Arquivo ! ", 64+0+0, "Atenção !!!")
      Thisform.bntPrimeiro.Enabled = .T.
      Thisform.bntAnterior.Enabled = .T.
      Thisform.bntProximo.Enabled = .F.
      Thisform.bntUltimo.Enabled = .F.       
    endif
    Thisform.bntPrimeiro.Enabled = .T.
    Thisform.bntAnterior.Enabled = .T.   
    .refresh
  endif
endwith
...


Bruno

bruno
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por hugo em 12/2/2010, 12:26

bruno

so umas dicas pra voce

Código:
if not eof() => use => if !eof()
skip +1 => use => skip

outro detalhe
sempre que estiver trabalhando com isto

Código:
thisform.bntprimeiro.enabled=.t.

e usar um ELSE

sempre confirme o status do botao

exemplo

Código:
if

bt01=.t.
bt02=.t.
bt03=.f.
bt03=.f.

else

bt01=.f.
bt02=.t. (teoricamente nao precisaria confirmar este)*
bt03=.f.
bt03=.f.


endif

* mais sempre confirme, isto vai te poucar muita dor de cabeca!


no seu codigo por exemplo:

Código:
...
Thisform.bntPrimeiro.Enabled = .T.
Thisform.bntAnterior.Enabled = .T.
Thisform.bntProximo.Enabled = .F.
Thisform.bntUltimo.Enabled = .F.
endif
Thisform.bntPrimeiro.Enabled = .T.
Thisform.bntAnterior.Enabled = .T.
Thisform.bntProximo.Enabled = .F. <= CONFIRME SEMPRE
Thisform.bntUltimo.Enabled = .F. <= CONFIRME SEMPRE

...


so umas dicas que me passaram e fizeram diferenca

espero ter ajudado!

_________________
"A tristeza é a falta de alegria, mais sem ela eu não poderia entender a alegria do fato de que a felicidade existe!"
Helio Leites - [Você precisa estar registrado e conectado para ver este link.]

hugo
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por Nelson Arcas em 12/2/2010, 12:41

Pessoal
Estou disponibilizando um form com exemplo
Efetuei as correções para o numero de dias e quando o ano era menor do que 1 estava gerando erro.
frm_calculaidade.rar

Nelson Arcas
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por Conteúdo patrocinado Hoje à(s) 05:07


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Página 1 de 4 1, 2, 3, 4  Seguinte

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum