Login
Estamos no Facebook
Buscar
Quem está conectado
Há 27 usuários online :: 2 usuários cadastrados, Nenhum Invisível e 25 Visitantes :: 2 Motores de buscadanielpinheirojr, tonilucciano
[ Ver toda a lista ]
O recorde de usuários online foi de 468 em 1/3/2012, 10:43
Brasília
| |
Estamos no Twitter

Nossa Comunidade

Nosso Grupo

Últimos assuntos
Top dos mais postadores
| Marcos Guedes | ||||
| hugo | ||||
| alceu11 | ||||
| Julio | ||||
| m@r<3|o | ||||
| mfelis | ||||
| Tales Ruan | ||||
| Nelson Arcas | ||||
| _batmanvfp_ | ||||
| marcio |
Karaoke feito em FoxPro 2.6
23/5/2012, 11:45 por fabiomacarrao
Bom dia a todos. Desenvolvi um programa em FoxPro for windows 2.6 para karaoke. tenho mais de 2700 …
Comentários: 3
Estatísticas
Temos 4048 usuários registradosO último usuário registrado atende pelo nome de fabiomacarrao
Os nossos membros postaram um total de 14433 mensagens em 2047 assuntos
Metodo para calcular idade - <
Página 1 de 6 • Compartilhe •
Página 1 de 6 • 1, 2, 3, 4, 5, 6 
Metodo para calcular idade - <
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
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

Re: Metodo para calcular idade - <
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
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

Re: Metodo para calcular idade - <
Olá, Bruno!
Não sei ao certo o que você precisa, então criei esta rotina.
Espero que o ajude.
Resolve?
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.
Convidado, seja nosso seguidor no Twitter:
twitter.com/programacaobras
Marcos Guedes- Webmaster

Re: Metodo para calcular idade - <
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
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

Re: Metodo para calcular idade - <
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.
Convidado, seja nosso seguidor no Twitter:
twitter.com/programacaobras
Marcos Guedes- Webmaster

Re: Metodo para calcular idade - <
Resolveu, Bruno?
_________________
Marcos Guedes - Programador e desenvolvedor Web.
Convidado, seja nosso seguidor no Twitter:
twitter.com/programacaobras
Marcos Guedes- Webmaster

Re: Metodo para calcular idade - <
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
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

Re: Metodo para calcular idade - <
Isto com a nova atualização que postei?
Irei testar novamente e posto aqui!

Irei testar novamente e posto aqui!

_________________
Marcos Guedes - Programador e desenvolvedor Web.
Convidado, seja nosso seguidor no Twitter:
twitter.com/programacaobras
Marcos Guedes- Webmaster

Re: Metodo para calcular idade - <
Marcos
Sim, isto ocorre com o codigo que voce postou 1/2/2010, 16:01.
Dependendo da data estes meses variam
Bruno
Sim, isto ocorre com o codigo que voce postou 1/2/2010, 16:01.
Dependendo da data estes meses variam
Bruno
bruno- Participante Regular

Re: Metodo para calcular idade - <
Bruno, veja se funciona:
Testei com algumas datas e funcionou normalmente.

- 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.
Convidado, seja nosso seguidor no Twitter:
twitter.com/programacaobras
Marcos Guedes- Webmaster

Re: Metodo para calcular idade - <
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
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

Re: Metodo para calcular idade - <
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?!
Irei continuar estudando uma forma de corrigir as falhas.
Hugo, encotrasse a rotina que dissestes ter?!
_________________
Marcos Guedes - Programador e desenvolvedor Web.
Convidado, seja nosso seguidor no Twitter:
twitter.com/programacaobras
Marcos Guedes- Webmaster

Re: Metodo para calcular idade - <
Marcos Guedes 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

Re: Metodo para calcular idade - <
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 )

Exercicio gostosinho de logica! hehe
Atende ai Bruno?
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!"
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

Re: Metodo para calcular idade - <
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

Página 1 de 6 • 1, 2, 3, 4, 5, 6 
Página 1 de 6
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum
» Modificar TitleBar e Icone do Executavel.
» Criar atalho, SYS(2020) e Desktop
» Karaoke feito em FoxPro 2.6
» Como separar caminho do diretório?
» Utilizando PHPMailer
» Programador em Visual Foxpro
» Link PHP (Dúvida)
» Fundo do PROJETO Transparente??
» Minimizar , Maximizar e Restaurar
» Pivot Table no sql server
» Scroll EditBox Automatico
» Select Nexval do FoxPro no OracleXE
» Colocar gif na caixa do MESSAGEBOX ()
» Comparar Versões do programa.exe
» Menu lateral
» Fazer com que a tela do sistema assume a janela principal
» Trocar Palavra no Sistema
» invocar Dll em Xbase
» Fechar Porta Aberta