Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

filipecrosk

calculo de idade

Recommended Posts

e ai galera..tudo na paz ne??

bem essa semana eu achei na net um codigo para trasformar a data de nascimento em idade atual

olhem:

<%function idade(dataatual, datanascimento)if (cint(mid(dataatual, 4, 2)))>=(cint(mid(datanascimento, 4, 2))) thenif (cint(mid(dataatual, 1, 2)))>=(cint(mid(datanascimento, 1, 2))) then n1 = cint(mid(dataatual, 7, 4)) n2 = cint(mid(datanascimento, 7, 4)) idade = n1-n2else n1 = cint(mid(dataatual, 7, 4)) n2 = cint(mid(datanascimento, 7, 4)) idade = n1-n2-1end ifelse n1 = cint(mid(dataatual, 7, 4))n2 = cint(mid(datanascimento, 7, 4))idade = n1-n2-1end ifend functioncall idade("29-11-2003", "11-01-1986") response.Write(idade)%>
so que nao conseguir nem entender e nem fazer funcionar.. se alguem ai ja tiver..ou se alguem puder me ajudar..

um abracao

filipe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nem li sua função parceiro, mas tenta assim ó....

Function Idades(Nasc)    Idades = Year(Now()) - Year(DataNasc)    iData = Day(Nasc) &"/"& Month(Nasc) &"/"& Year(Date())    If DateDiff("d", Date(), iData) > 0 Then Idades = Idades -1 End Function

Onde:

 

Response.Write Idades("07/06/1984")

O retorno será 19 anos

 

- Fernando Botelho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já fiz um código para calcular idade de acordo com a data de nascimento uma vez.... vou tentar achar para colocar aqui... mas é mais complicado do que parece pois temos que considerar o ano, o mês e o dia... pois pode ser que hoje o usuário esteje fazendo aniversário, então o sistema tem que calcular primeiro os anos que se passaram, depois se ainda não chegou o mês de aniversário, se está no mês ou se já passou, e se for o mês de aniversário devemos ver se ainda não chegou o dia do aniversário, se hoje é o dia ou se já passou.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Idades = Year(Now()) - Year(DataNasc)

Corrija a digitação: Idades = Year(Now()) - Year(Nasc)
Isso... Isso... Isso... :P - Fernando Botelho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Function Idade(sData) Idade = 0 'Exit Function IF isDate(sData) THEN Idade = Year(Now()) - Year(sData) iData = Day(sData) &"/"& Month(sData) &"/"& Year(Date()) IF DateDiff("d",DataBrazil(Date(),"dd/mm/yyyy"), DataBrazil(iData,"dd/mm/yyyy")) > 0 Then Idade = Idade -1 END IFEnd FunctionResponse.Write Idade("27/09/1983")Function DataBrazil(sData,sTipo) sDia = Day( sData ) sMes = Month( sData ) sHoras = Hour( sData ) sMinutos = Minute( sData ) sSegundos = Second( sData ) If sDia <= 9 Then sDia = "0" & sDia If sMes <= 9 Then sMes = "0" & sMes If sHoras <= 9 Then sHoras = "0" & sHoras If sMinutos <= 9 Then sMinutos = "0" & sMinutos If sSegundos <= 9 Then sSegundos = "0" & sSegundos IF sTipo = True Then DataBrazil = sDia & "/" & sMes & "/" & Year(sData) & " " & sHoras & ":" & sMinutos & ":" & sSegundos Else DataBrazil = Day(sData) & "/" & Month(sData) & "/" & Year(sData) End IfEnd Function

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se está usando banco de dados em Access você pode criar uma consulta que gere um campo já com as idades calculadas:idade: Int((DifData("a";[dtnas];Data()))/365,25)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo assim fica facil ó:

Function PegarIdade(DataNascimento)DataNascimento = FormatDateTime(DataNascimento, vbShortDate)Idade = Date - CDate(DataNascimento)Idade = Round(Idade / 365)PegarIdade = IdadeEnd Function
Daí você chama a função assim:
<%=PegarIdade("26/09/85")%>
Ok?

Compartilhar este post


Link para o post
Compartilhar em outros sites

alguem sabe se eu poderia uzar isso numa busca?? ou seja na busca o cara vai escolher buscar pessoas de idade x a idade y ai ele vai buscar no campo da tabela no banco de dados "datadenascimento" e ai ja calcula e transforma para idade atual?? sera que eu poderia fazer isso ou ia dar pau???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pow é fácil...

<%IdadeInicio = CLng(Request("IdadeInicio"))IdadeFinal = CLng(Request("IdadeFinal"))Function PegarIdade(DataNascimento)DataNascimento = FormatDateTime(DataNascimento, vbShortDate)Idade = Date - CDate(DataNascimento)Idade = Round(Idade / 365)PegarIdade = IdadeEnd FunctionSet conexao = Server.CreateObject("ADODB.Connection")conexao.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("banco.mdb")sql = "SELECT * FROM Tabela"Set rs = conexao.Execute sqlDo While Not rs.EOFIdade = PegarIdade(rs("DataNascimento"))Idade = CLng(Idade)If Idade > IdadeInicio And Idade > IdadeFinal ThenResponse.Write rs("Nome") & " - " & rs("DataNascimento") & "<br>"End Ifrs.MoveNextLoopSet rs = NothingSet conexao = Nothing%>
Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ai cara nao é isso nao.. eu queria que na busca ja fizesse os calculos.. ex: select * from tabela where = pegaridade(idade) entendeu??? o cara vai escolhar a idade.. so que no bd vai ta a data de nascimento.. ai na hora de buscar ja vai fazer os calculos.. mas acho que vai é dar pau.. ficar lento demias.. posso fazer isso?? e como faria?? grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pow mas tipo q ele naum faz a busca no select e sim nessa parte:

If Idade > IdadeInicio And Idade > IdadeFinal ThenResponse.Write rs("Nome") & " - " & rs("DataNascimento") & "<br>"End If
Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tipo que a minha ideia é fazer a busca no select mesmo porque visita ai

www.turmateen.com.br/mural/busca.asp

porque quero fazer a busca por idade, entendeu???!!!

entao é isso...

se puder me dar essse help..

e se eu tiver vacilando foi mal..hehe

e o meu select é assim:

'Vamos começar a criar a declaração de SQLSql = "SELECT * FROM mural WHERE"Sql = Sql & " estado = '" &estado& "' and"'declara consulta de sexoIf request.form("sexo") <> "" Then  If request.form("sexo") = "Masculino" Then     SQL = SQL & " sexo = '"&request.form("sexo")&"' and"  End If  If request.form("sexo") = "Feminino" Then     SQL = SQL & " sexo = '"&request.form("sexo")&"' and"        End IfEnd If'fim da consulta por sexo'consulta por idade[B]Sql = Sql & " idade >= '" &idade& "' and"Sql = Sql & " idade <= '" &idade2& "'"[/B]'Ordenamos os registos que vamos obter alfabeticamente,'para mais fácil leitura.Sql = Sql & " ORDER BY nome"

Compartilhar este post


Link para o post
Compartilhar em outros sites

ai cara acho que ja to sendo chato ne??!!mas tipo que eu entendi que o codigo faz a mudanca da data de nascimento para a idade no recordset..mas eu queria fazer isso direto no select tem como nao???!!!porque eu quero deixar disponivel para o uzuario do site fazer uma busca por uzuarios que tenhao tal idade.. so que no bd nao vai ter o campo idade..mas vai ter o campo com a data de nascimento ai no select ja tinha que fazer a busca mudando as datas de nascimento e vendo se é igual a idade procurada entendeu????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ressucitando o tópico

 

Consegui fazer da seguinte forma...

 

Isso deu certo em uma página e em outra não deu certo... se alguém conseguir me ajudar eu agradeço, pois estou a 5 dias em cima disso!!!

 

Colocarei o erro em baixo do código...

 

 

<% Dim dia, mes, ano

'pego os valores do banco...

 

dia = (rsnick.Fields.Item("dia_nascimento_dele").Value)

mes = (rsnick.Fields.Item("mes_nascimento_dele").Value)

ano = (rsnick.Fields.Item("ano_nascimento_dele").Value)

 

'trato pra ficar no padrao 00/00/0000

 

data = dia&"/"&mes&"/"&ano

a = split(data,"/")

dia = a(0)

if len(dia) = 1 then

dia = "0" & dia

end if

mes = a(1)

if len(mes) = 1 then

mes = "0" & mes

end if

ano = a(2)

 

data = dia & "/" & mes & "/" & ano

 

'calculo a idade...

 

Function Idades(Nasc)

Idades = Year(Now()) - Year(Nasc)

 

iData = Day(Nasc) &"/"& Month(Nasc) &"/"& Year(Date())

If DateDiff("d", Date(), iData) > 0 Then Idades = Idades -1

End Function

Response.Write Idades(data)

%>

 

 

Tipo de erro:

Erro de compilação do Microsoft VBScript (0x800A03EA)

Erro de sintaxe

/enigma/locaweb/web/classificados/bscultimos.asp, line 390

Function Idades(Nasc)

 

 

<_<

 

Por favor quem puder ajudar eu agradeço!!!

 

http://forum.imasters.com.br/public/style_emoticons/default/yes.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente assimIdade = DateDiff("yyyy", Now, "10-12-2002") no lugar daquela outra data você poe a data de nascimento

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.