Clique abaixo para nos ajudar
Login

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
11 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 10 Visitantes :: 2 Motores de busca

lucasburitis

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
Últimos assuntos
Bloquear edição do ListBox

17/6/2010, 15:13 por Julio

Pessoal

Boa Tarde!

Tnho uma listbox apenas para exibir o resultado.
Preciso bloquear a listbox …

Comentários: 17

automação do mozilla e chrome

15/1/2017, 12:16 por Handerson Mildroz

Boa tarde a todos!

Sou iniciante no VFP. Preciso de ajuda, pois tenho um código que usa o …

Comentários: 0

COMO ESTÃO DESENVOLVENDO EM WEB?

22/8/2016, 10:48 por AJC

Pessoal, já lí sobre vários topicos aqui no forum sobre desenvolvimento web
mas ainda nada …

Comentários: 2

USAR REPORT FORM

30/12/2016, 09:06 por AJC

Pessoal bom dia,
Estou com um grande problema, já pesquisei muita coisa sobre report form, mas o …

Comentários: 0

dll pertocheck

15/12/2016, 12:45 por FERNANDOMATRELLA

Alguem teria ja desenvolvido a comunicação com essa dll estou tento muito trabalho aqui e nenhum …

Comentários: 1

Estatísticas
Temos 6988 usuários registrados
O último usuário registrado atende pelo nome de lucasburitis

Os nossos membros postaram um total de 3 mensagens em 1 assuntos

Metodo para calcular idade - <

Página 2 de 4 Anterior  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

Relembrando a primeira mensagem :

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 Marcos Guedes em 12/2/2010, 12:59

Muito bom o exemplo!

_________________
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, 13:08

Ok

Vou realizar as alterações nos botoes

Obrigado

Bruno

bruno
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por cabeludo em 12/2/2010, 14:38

Uma opinião de alguém que não programa em VFP.
Acredito que as soluções deveriam ser dadas em forma de lógica, e não em linguagem final...
Por exemplo, demorei muito tempo pra entender a lógica de alguns fontes aqui, justamente por não conhecer a sintaxe da linguagem...
Se fosse para postar alguma solução, colocaria apenas:
Código:

variavel IDADE;

// Pra evitar datas maiores do que hoje
se ANO_AGORA < ANO_NASC
  "sujeito não nasceu ainda"
senao se ANO_AGORA = ANO_NASC e
          MES_AGORA < MES_NASC
  "sujeito não nasceu ainda"
senao se ANO_AGORA = ANO_NASC e
          MES_AGORA = MES_NASC e
          DIA_AGORA < DIA_NASC
  "sujeito não nasceu ainda"

// Calculando o Ano
IDADE = ANO_AGORA - ANO_NASC

// Compensando o mes
se MES_AGORA < MES_NASC
  IDADE-1  // Nao fez aniversário ainda
  sai da função
se MES_AGORA = MES_NASC e DIA_AGORA < DIA_NASC
  IDADE-1  // Nao fez aniversário ainda
  sai da função
Com essa lógica, dá pra adaptar pra qualquer linguagem!
Que tal adotar um método parecido?
Se ainda houver a necessidade de códigos fontes, existe a área no forum específica pra isso, não?
Desculpa ai se fui encrenquinha!

cabeludo
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por Marcos Guedes em 12/2/2010, 14:40

[Você precisa estar registrado e conectado para ver este link.] escreveu:Uma opinião de alguém que não programa em VFP.
Acredito que as soluções deveriam ser dadas em forma de lógica, e não em linguagem final...
Por exemplo, demorei muito tempo pra entender a lógica de alguns fontes aqui, justamente por não conhecer a sintaxe da linguagem...
Se fosse para postar alguma solução, colocaria apenas:
Código:

variavel IDADE;

// Pra evitar datas maiores do que hoje
se ANO_AGORA < ANO_NASC
  "sujeito não nasceu ainda"
senao se ANO_AGORA = ANO_NASC e
          MES_AGORA < MES_NASC
  "sujeito não nasceu ainda"
senao se ANO_AGORA = ANO_NASC e
          MES_AGORA = MES_NASC e
          DIA_AGORA < DIA_NASC
  "sujeito não nasceu ainda"

// Calculando o Ano
IDADE = ANO_AGORA - ANO_NASC

// Compensando o mes
se MES_AGORA < MES_NASC
  IDADE-1  // Nao fez aniversário ainda
  sai da função
se MES_AGORA = MES_NASC e DIA_AGORA < DIA_NASC
  IDADE-1  // Nao fez aniversário ainda
  sai da função
Com essa lógica, dá pra adaptar pra qualquer linguagem!
Que tal adotar um método parecido?
Se ainda houver a necessidade de códigos fontes, existe a área no forum específica pra isso, não?
Desculpa ai se fui encrenquinha!
Para isto é só utilizar o link abaixo:

- [Você precisa estar registrado e conectado para ver este link.]

O fórum "Algoritmos" é reservado "Para iniciantes e soluções de programação de uma forma geral".

_________________
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 12/2/2010, 15:24

[Você precisa estar registrado e conectado para ver este link.] escreveu:Uma opinião de alguém que não programa em VFP.
Acredito que as soluções deveriam ser dadas em forma de lógica, e não em linguagem final...
Por exemplo, demorei muito tempo pra entender a lógica de alguns fontes aqui, justamente por não conhecer a sintaxe da linguagem...
Se fosse para postar alguma solução, colocaria apenas:
Código:

variavel IDADE;

// Pra evitar datas maiores do que hoje
se ANO_AGORA < ANO_NASC
  "sujeito não nasceu ainda"
senao se ANO_AGORA = ANO_NASC e
          MES_AGORA < MES_NASC
  "sujeito não nasceu ainda"
senao se ANO_AGORA = ANO_NASC e
          MES_AGORA = MES_NASC e
          DIA_AGORA < DIA_NASC
  "sujeito não nasceu ainda"

// Calculando o Ano
IDADE = ANO_AGORA - ANO_NASC

// Compensando o mes
se MES_AGORA < MES_NASC
  IDADE-1  // Nao fez aniversário ainda
  sai da função
se MES_AGORA = MES_NASC e DIA_AGORA < DIA_NASC
  IDADE-1  // Nao fez aniversário ainda
  sai da função
Com essa lógica, dá pra adaptar pra qualquer linguagem!
Que tal adotar um método parecido?
Se ainda houver a necessidade de códigos fontes, existe a área no forum específica pra isso, não?
Desculpa ai se fui encrenquinha!

cabelo

apesar deste codigo ficar mais extenso, concordo que ele ficaria
bem mais facil de manutencao! muito logico, elimininacao por partes!
facil de entender!

parabens!

valeu

_________________
"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 cabeludo em 12/2/2010, 15:37

ok, então depois de solucionar um problema aqui, alguém se encarregaria de "traduzir" o fonte pra uma lógica comum e postaria na área de algorítimo?
Melhor seria o inverso, não?

cabeludo
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por hugo em 12/2/2010, 16:39

[Você precisa estar registrado e conectado para ver este link.] escreveu: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

digite 01/01/3000 pra ver o que ocorre!

valeu

_________________
"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 12/2/2010, 16:56

[Você precisa estar registrado e conectado para ver este link.] escreveu:digite 01/01/3000 pra ver o que ocorre!

valeu
É só alterar o código do método "calcula_idade" para este:
Código:
*** Parametro de Entrada ****
PARAMETERS lnasceu

*** Variaveis utilizadas
LOCAL dtnasceu AS DATE
LOCAL hoje AS DATE
LOCAL meses1 AS DOUBLE
LOCAL meses2 AS DOUBLE
LOCAL meses3 AS DOUBLE
LOCAL anos AS DOUBLE
LOCAL meses AS DOUBLE
LOCAL auxdata AS DATE
LOCAL auxndias AS DOUBLE

LOCAL anoAtual as Integer
LOCAL anoNasceu as Integer
LOCAL mesAtual as Integer
LOCAL mesNasceu as Integer

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

m.anoAtual = YEAR(m.hoje)
m.anoNasceu = YEAR(m.dtnasceu)
m.mesAtual = MONTH(m.hoje)
m.mesNasceu = MONTH(m.dtnasceu)

IF (m.anoNasceu>m.anoAtual)
   m.ltexto = "0 dias"
   RETURN (m.ltexto)
ENDIF

*** Transformando o intervalo do periodo em meses
m.meses1= (m.anoAtual-m.anoNasceu)*12

*** Verifica se o mês que está sendo analisado
IF (m.mesNasceu<=m.mesAtual) THEN
   m.meses2=(m.mesNasceu-m.mesAtual)*-1
ELSE
   m.meses2=(m.mesAtual-m.mesNasceu)
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 m.anos>0
   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
ELSE
   m.meses=m.meses3
ENDIF


*** Acho os dias ***
IF DAY(m.hoje)>= DAY(m.dtnasceu)
   m.dias = DAY(m.hoje)-DAY(m.dtnasceu)
ELSE
   m.meses=(m.meses-1)
   m.auxdias = (DAY(m.hoje)-DAY(m.dtnasceu))
   m.dias = (m.hoje - GOMONTH(m.hoje,-1))
   m.dias= (m.dias+m.auxdias)-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)

_________________
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 12/2/2010, 17:16

não parei para analisar os códigos, ainda.
apenas corrigir o erro que você citou.

Estou aguardando a resposta do Bruno para saber se ele resolveu o problema.

_________________
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 12/2/2010, 17:56

[Você precisa estar registrado e conectado para ver este link.] escreveu:
[Você precisa estar registrado e conectado para ver este link.] escreveu:digite 01/01/3000 pra ver o que ocorre!

valeu
É só alterar o código do método "calcula_idade" para este:
Código:
*** Parametro de Entrada ****
PARAMETERS lnasceu

*** Variaveis utilizadas
LOCAL dtnasceu AS DATE
LOCAL hoje AS DATE
LOCAL meses1 AS DOUBLE
LOCAL meses2 AS DOUBLE
LOCAL meses3 AS DOUBLE
LOCAL anos AS DOUBLE
LOCAL meses AS DOUBLE
LOCAL auxdata AS DATE
LOCAL auxndias AS DOUBLE

LOCAL anoAtual as Integer
LOCAL anoNasceu as Integer
LOCAL mesAtual as Integer
LOCAL mesNasceu as Integer

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

m.anoAtual = YEAR(m.hoje)
m.anoNasceu = YEAR(m.dtnasceu)
m.mesAtual = MONTH(m.hoje)
m.mesNasceu = MONTH(m.dtnasceu)

IF (m.anoNasceu>m.anoAtual)
   m.ltexto = "0 dias"
   RETURN (m.ltexto)
ENDIF

*** Transformando o intervalo do periodo em meses
m.meses1= (m.anoAtual-m.anoNasceu)*12

*** Verifica se o mês que está sendo analisado
IF (m.mesNasceu<=m.mesAtual) THEN
   m.meses2=(m.mesNasceu-m.mesAtual)*-1
ELSE
   m.meses2=(m.mesAtual-m.mesNasceu)
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 m.anos>0
   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
ELSE
   m.meses=m.meses3
ENDIF


*** Acho os dias ***
IF DAY(m.hoje)>= DAY(m.dtnasceu)
   m.dias = DAY(m.hoje)-DAY(m.dtnasceu)
ELSE
   m.meses=(m.meses-1)
   m.auxdias = (DAY(m.hoje)-DAY(m.dtnasceu))
   m.dias = (m.hoje - GOMONTH(m.hoje,-1))
   m.dias= (m.dias+m.auxdias)-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)


como devo informar a data para lnasceu?

"PARAMETERS lnasceu" ???

_________________
"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 12/2/2010, 17:58

no textbox.

_________________
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 14/2/2010, 13:51

Marcos, erro no codigo

Código:
IF (m.mesNasceu<=m.mesAtual) THEN
  m.meses2=(m.mesNasceu-m.mesAtual)*-1
ELSE
  m.meses2=(m.mesAtual-m.mesNasceu)
ENDIF

traduzindo....
Código:
IF (8<=2) THEN
  m.meses2=(8-2)*-1 && = a (-6) && falso neste if
ELSE
  m.meses2=(2-8) && = (-6) && verdadeiro neste if
ENDIF

valeu

obrigado


Última edição por hugo em 15/2/2010, 23:23, editado 2 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 hugo em 14/2/2010, 16:41

galera, li os codigos dispostos no post e dei uma polida no meu
aprendi uns comandos novos, hehe, valeu

espero que gostem, 15 linhas!

Código:
* by jocelem HUGO - CODIGO FREE - 14/02/2010
dtnasc=CTOD("06/08/1971")
if dtnasc=>date()
   wait window "Voce nao nasceu!"
else
   meses1=(year(date())-year(dtnasc))*12
   meses2=0
   dias=0
   meses2=IIF(MONTH(dtnasc)<=MONTH(DATE()),MONTH(DATE())-MONTH(dtnasc),MONTH(dtnasc)-MONTH(DATE()))
   meses=meses1+meses2
   anos=int(meses/12)
   meses=IIF(anos>0,IIF(DAY(DATE())=>DAY(dtnasc),MOD(meses,INT(meses/12)),MOD(meses,INT(meses/12))-1),0)
   dias=IIF(DAY(DATE())=>DAY(dtnasc),DAY(DATE())-DAY(dtnasc),(DATE()-GOMONTH(DATE(),-1))+(DAY(DATE())-DAY(dtnasc)-1))
   meses=IIF(DAY(DATE())=>DAY(dtnasc),meses,meses-1)
   WAIT WINDOW "Sua idade é: " + allt(str(anos)) + " anos, " + allt(str(meses)) + " mes(es) e " + allt(str(dias)) + " dias!"
ENDIF

o codigo ta endentado certinho, o forum aqui que nao visualiza direito
colem no vfp e vai dar pra ver legal

(marcos, daria pra melhorar a visualizacao do codigo?)

valeu


Última edição por hugo em 15/2/2010, 22:13, editado 3 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 COMPARATIVO DE CODIGOS COM MESMO RESULTADO

Mensagem por hugo em 17/2/2010, 12:39

OPCAO A

Este codigo de 28 linhas calcula a idade de 1010 datas em 7 segundos num notebook Intel T6500 4GB Ram

Código:
* by jocelem HUGO - CODIGO FREE - 17/02/2010
********************************************
* este codigo calcula a idade de 1010 datas em 7 segundos num notebook Intel T6500 4GB Ram

inicio=TIME()
dtnasc=CTOD("01/01/1900")
DO WHILE dtnasc<DATE()
IF dtnasc=>DATE()
   WAIT WINDOW "Voce nao nasceu!"
ELSE
diaatu=dtnasc
dias=0
anos=0
mes=0
DO WHILE diaatu<DATE()
   dias=dias+1
   diaatu=diaatu+1
   ano=RIGHT(DTOC(diaatu),4)
   IF VAL(left(DTOC(diaatu),2))=VAL(left(DTOC(dtnasc),2))
      mes=mes+1
      dias=0
      IF mes=12
         anos=anos+1
         mes=0
      ENDIF
   ENDIF
enddo
WAIT wind "Sua idade eh: " + ALLTRIM(STR(anos)) + " anos, " + ALLTRIM(STR(mes)) + " mes(es) e " + ALLTRIM(STR(dias)) + " dias!" nowait
endif
dtnasc=dtnasc+365
ENDDO
WAIT WINDOW "Inicio: " + inicio + " - Fim: " + TIME()


OPCAO B

Este codigo de 20 linhas calcula a idade de 9999 datas em menos de 1 segundo num notebook Intel T6500 4GB Ram

Código:
* by jocelem HUGO - CODIGO FREE - 17/02/2010
********************************************
* este codigo calcula a idade de 9999 datas em menos de 1 segundo num notebook Intel T6500 4GB Ram

inicio=TIME()
dtnasc=CTOD("06/08/0000")
DO WHILE m.dtnasc<CTOD("01/01/9999")
if dtnasc=>date()
*   wait window "Voce nao nasceu!"
else
   meses1=(year(date())-year(dtnasc))*12
   meses2=0
   dias=0
   meses2=IIF(MONTH(dtnasc)<=MONTH(DATE()),MONTH(DATE())-MONTH(dtnasc),MONTH(dtnasc)-MONTH(DATE()))
   meses=meses1+meses2
   anos=int(meses/12)
   meses=IIF(anos>0,IIF(DAY(DATE())=>DAY(dtnasc),MOD(meses,INT(meses/12)),MOD(meses,INT(meses/12))-1),0)
   dias=IIF(DAY(DATE())=>DAY(dtnasc),DAY(DATE())-DAY(dtnasc),(DATE()-GOMONTH(DATE(),-1))+(DAY(DATE())-DAY(dtnasc)-1))
   meses=IIF(DAY(DATE())=>DAY(dtnasc),meses,meses-1)
   WAIT WINDOW "Sua idade é: " + allt(str(anos)) + " anos, " + allt(str(meses)) + " mes(es) e " + allt(str(dias)) + " dias!" nowait
ENDIF
dtnasc=dtnasc+365
enddo
WAIT WINDOW "Inicio: " + inicio + " - Fim: " + TIME()

OPCAO A) 28 linhas, 1010 datas = 7 segundos
OPCAO B) 20 linhas, 9999 datas < 1 segundo

uma pessoa, ou mais, como revisor de codigo num sistema eh interessante nao??

abraco galera

_________________
"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 17/2/2010, 14:51

Resolveu o problema, 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 18/2/2010, 15:17

Pessoal

Me desculpe a demora em responder, vc´s sabem neh carnaval !!!

Vamos ao que interessa é tanto codigo que eu me perdi aqui na bagaça, mas testei todos, so preciso ajusta-lo ao que preciso.

Hugo, postou um codigo dia 12/2/2010, 17:56, aqui esta dando erro nos meses, por exemplo uma data 14/10/1966, tenho o resultado de 43 anos 4 meses e 4 dias o correto nao seria 8 meses?

Não sei se estou utilizando da forma correta.
No lostfocus do meu campo TXTDTNasc eu coloque Thisform.CalculaIdade, criei um metodo CalculaIdade e coloco os codigos aqui postados, e em alguns casos coloco em um PRG que determino com procedimento E em determinado momento chamo este codigo.

Outros codigo tambem funcionam, os codigo atendem ao que preciso, so preciso ajustar os meus botoes proximo e anterior, quando chega no final do arquivo fica travado o sistema. O cara quer ir vendo os dados e que o campo da idade tambem atualize.

Marcos

Quanto ao codigo esta resolvido so preciso ajustar a necessidade acima citada.

Obrigado a todos que se dispuseram em ajudar.

O pessoal deste forum e fera!!

Valeu

Obrigado

Bruno

bruno
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por bruno em 18/2/2010, 15:23

Hugo

Referente ao codigo postado parte de algoritimo, se utiliza-lo vera que se usar a data 14/10/1966, tenho o resultado 44 anos, 8 meses e 4 dias, neste os meses estão corretos e o ano esta errado, nao teria que ser 43 anos, pois so vai fazer o aniversario em outubro.

Obrigado

Bruno

bruno
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

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

vou verificar

mais pra todo efeito leia os ultimo post que coloquei aqui com dois fontes

uma comparacao muito legal!

resumindo, considere este

Código:

* by jocelem HUGO - CODIGO FREE - 17/02/2010
********************************************
dtnasc=CTOD("06/08/1971")
if dtnasc=>date()
  wait window "Voce nao nasceu!"
else
  meses1=(year(date())-year(dtnasc))*12
  meses2=0
  dias=0
  meses2=IIF(MONTH(dtnasc)<=MONTH(DATE()),MONTH(DATE())-MONTH(dtnasc),MONTH(dtnasc)-MONTH(DATE()))
  meses=meses1+meses2
  anos=int(meses/12)
  meses=IIF(anos>0,IIF(DAY(DATE())=>DAY(dtnasc),MOD(meses,INT(meses/12)),MOD(meses,INT(meses/12))-1),0)
  dias=IIF(DAY(DATE())=>DAY(dtnasc),DAY(DATE())-DAY(dtnasc),(DATE()-GOMONTH(DATE(),-1))+(DAY(DATE())-DAY(dtnasc)-1))
  meses=IIF(DAY(DATE())=>DAY(dtnasc),meses,meses-1)
  WAIT WINDOW "Sua idade é: " + allt(str(anos)) + " anos, " + allt(str(meses)) + " mes(es) e " + allt(str(dias)) + " dias!"
ENDIF



valeu!

_________________
"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 19/2/2010, 14:25

Valeu Hugo

Vou usar este ultimo codigo postado

Value pela ajuda

Bruno

bruno
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por amaury em 2/8/2010, 18:53

boa noite pessoal desculpem a minha ignorancia na rotina, mas este calculo no meu exemplo deu 53 anos (o que não é o caso) pq ainda tenho 52 (14/11/1957).
To errado ?

amaury
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por alceu11 em 2/8/2010, 20:27

Amaury
baixe este exemplo
[Você precisa estar registrado e conectado para ver este link.]
este calcula!!

[Você precisa estar registrado e conectado para ver esta imagem.]

alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por lardecristo em 2/8/2010, 20:39

Caramba Alceu11.....rsrsrsrs
Acabei a minha agora.....rsrsrs
Código:
FUNCTION CalculaIdade(ldDataInicial as Date, ldDataFinal as Date)
   LOCAL lnQtdDiaTotal as Integer, lnAux as Integer, lsRetorno as String
   LOCAL lnQtdAno as Integer, lnQtdMes as Integer, lnQtdDia as Integer
   lnQtdDiaTotal = ABS(VAL(SYS(11,ldDataFinal)) - VAL(SYS(11,ldDataInicial)))
   lnQtdAno = INT(lnQtdDiaTotal/365)
   lnAux = lnQtdDiaTotal - (lnQtdAno*365)
   lnQtdMes = INT(lnAux/30)
   lnAux = lnAux - (lnQtdMes*30)
   lnQtdDia = lnAux
   lsRetorno = TRANSFORM(lnQtdAno) + " anos, " + TRANSFORM(lnQtdMes) + " meses e " + TRANSFORM(lnQtdDia) + " dias."
RETURN lsRetorno

Está calcula perfeitamente, até demais.....rsrsrsrs... não vou falar porque, mas vou mandar o exemplo e vejam o resultado.

Código:
MESSAGEBOX(CalculaIdade(CTOD("05/12/1970"), CTOD("05/12/2010")))

Alguém se habilita para dizer porque? Brincadeira, galera mas é só para fritarmos a cabeça.

Abraços,

lardecristo
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por lardecristo em 2/8/2010, 20:44

Só reafirmando, a rotina acima realmente calcula perfeitamente até demais, mas gostaria de saber se alguém se habilita a me dizer porque.
E usem o exemplo que coloquei para o calculo.

Teste o seu exemplo Alceu11, gostei muito, realmente calculou, mas deu diferente da que eu enviei, gostaria que você analisa-se e me disse porque, eu já sei a resposta, mas fica como exercício para todos.

PS.: Não fiquem bravos comigo, é só para exercitarem a mente....rsrsrsr.

Abraços,

lardecristo
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por alceu11 em 2/8/2010, 21:06

o seu deu 14 dias a mais na minha idade, mais nao consegui entender pq,
ate ia criar um metodo no form colocando esta funcao e desisti.
por causa do caculalo 51 anos 0 meses e 16 dias.
Sera 14 anos bisextos que feveiro tem 29 dias?


Última edição por alceu11 em 2/8/2010, 21:13, editado 1 vez(es)

alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: Metodo para calcular idade - <

Mensagem por hugo em 2/8/2010, 21:11

ano bisexto tem 366 dias

_________________
"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

Página 2 de 4 Anterior  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