Clique abaixo para nos ajudar
Conectar-se

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
17 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 17 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
TRY BEGIN E FLOCK()

17/4/2017, 10:32 por AJC

Pessoal estou tendo alguns problemas de gravação em rede, estou usando
try begin, mas vi algo na …

Comentários: 0

Exportar Dados Campo Memo Tabela DBF

10/4/2017, 10:28 por fcampos

Olá bom dia.

Estou tentando exportar os dados de algumas tabelas em formato dbf pelo foxpro.
O …

Comentários: 2

Função EVL()

8/4/2017, 12:18 por Clebervfp

Bom dia a todos.
Vim compartilhar de uma Função do próprio VFP que me benefício muito.
Função …

Comentários: 0

COMO BLOQUEAR REGISTRO OU TABELA NO VISUAL FOXPRO PARA GRAVAÇÃO EM REDE

3/4/2017, 10:29 por AJC

Pessoal estou tendo um problema que acontece sempre busco na minha tabela de clientes o ultimo …

Comentários: 2

Controlar Scanner Twain

31/3/2017, 17:31 por Kleber R Bento

Estou usando o EZTW32.DLL para criar uma ferramenta que escaneia e gera PDF. Porém com esses …

Comentários: 0

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

Os nossos membros postaram um total de 48 mensagens em 25 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.]
avatar
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.]
avatar
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.]
avatar
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)
avatar
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)
avatar
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.]
avatar
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.]
avatar
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
avatar
Nelson Arcas
Participa Bastante
Participa Bastante


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