• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

RicardoC

Dúvida sobre idades

14 mensagens neste tópico

Eu tenho aqui uma dúvida sobre como colocar actualizadas as idades ao longo dos anos...

Falei com um amigo meu e ele disse que através de incrementações era capaz de fazer, mas o problema é que não sei como fazer e acho que é só em PHP e estou a trabalhar num projecto em asp...

Por isso venho aqui perguntar se posso colocar incrementações num ficheiro em asp. Se sim como faço ?

Estou a trabalhar em base de dados através do Access (isto basta para o que quero fazer) e o código que eu tenho é:

					<td height="1" width="138" valign="top">
					<%

					set conn=Server.CreateObject("ADODB.Connection")
					conn.Provider="Microsoft.Jet.OLEDB.4.0"
					conn.Open(Server.Mappath("/pap/we.mdb"))
					set rs = Server.CreateObject("ADODB.recordset")
					rs.Open "Select nomecompleto from Divas Where Wrestler='Kelly Kelly'", conn

					%><font size="2"><b>Nome Completo:</b></font>

					</td>
					<td height="1" width="167" valign="top">

					<%
					do until rs.EOF
					response.write("<font size=2>" & rs.fields("nomecompleto")& "</font>" )
					rs.MoveNext
					loop
					rs.close
					conn.Close
					set rs=Nothing
					set conn=Nothing
					%>

					</td>

*P.S eu sei que é o nome completo, mas faz de conta que está lá a data de nascimento.

Agradecia a ajuda

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se tens a data de nascimento, é só subtraí-la à data actual... se não for isso que pretendes, não percebi.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso é feito dinamicamente. Cada vez que acedes à página, o servidor pega na data actual e na data de nascimento, e subtrai-as. O resultado não fica na base de dados.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Depende do formato em que tenhas a data de nascimento.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Data/hora

				<tr>
					<td height="1" width="138" valign="top">
					<%

					set conn=Server.CreateObject("ADODB.Connection")
					conn.Provider="Microsoft.Jet.OLEDB.4.0"
					conn.Open(Server.Mappath("/pap/we.mdb"))
					set rs = Server.CreateObject("ADODB.recordset")
					rs.Open "Select datadenascimento from Divas Where Wrestler='Queen Sharmell'", conn

					%><font size="2"><b>Data de Nascimento:</b></font>

					</td>
					<td height="1" width="167" valign="top">
					<%
					do until rs.EOF
					response.write("<font size=2>" & rs.fields("datadenascimento")& "</font>" )
					rs.MoveNext
					loop
					rs.close
					conn.Close
					set rs=Nothing
					set conn=Nothing
					%>
					</td>
				</tr>

Eis um exemplo da minha página

http://i128.photobucket.com/albums/p186/GallagherJr/2.jpg

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok, não conheço essa linguagem, vale mais dizer-te o algoritmo.

idade = ano_actual - ano_nascimento;
se (mes_actual < mes_nascimento)
    idade = idade - 1;
se (mes_actual = mes_nascimento)
    se (dia_actual < dia_nascimento)
        idade = idade - 1;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não deu ! tipo eu só tenho, em relação à idade, apenas a data de nascimento em Data/Hora

Mas obrigado pelo teu tempo

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas isso não te retorna uma string? É questão de converteres os anos/mese/dias para inteiros e fazer as contas!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

<%

If idade = "2007" - "1987" Then

("7" < "7")

    idade = idade - 1;

Else If ("7" = "7") Then

  ("13" < "13")

        idade = idade - 1;

End If

%>

Deu este erro:

Tipo de erro:

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

Instrução esperada

/pap/perfis/a/ashley/ashley.asp, linha 187

("7" < "7")

Eu tentei de outra forma, mas esta é mais dificil...e não consigo ver isto no firefox... apenas consigo ver no IE...

<script type="text/vbscript">

hoje = now()

data_de_nascimento = "24/05/1987"

document.write(datediff("yyyy", data_de_nascimento, hoje))

</script>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Foste tu que fizeste os dois troços de código? É que o 1º não tem pés nem cabeça, mas o 2º até parece bem estruturado. A razão de só conseguires ver o 2º exemplo no IE deve-se ao facto de o IE ser o único browser que sabe interpretar VBScript, sendo uma tecnologia proprietária da Microsoft.

Não te posso ajudar muito mais porque não conheço a linguagem. Não sei como converter de texto para inteiros, nem sei se é necessário ou automático. Depois deve ficar algo do género:

ano_actual=2007
mes_actual=5
dia_actual=26
ano_nasc=1987
mes_nasc=5
dia_nasc=24
idade=ano_actual - ano_nasc
if (mes_actual < mes_nasc) idade = idade - 1
else if (mes_actual = mes_nasc) And (dia_actual < dia_nasc) idade = idade - 1
end if

Pode ser que alguém que saiba mais de ASP que eu te possa ajudar...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bastou aplicar isto...que chama a data de nascimento através da base de dados

<%

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

%>

<%= Idades(rs.fields("data_nascimento")) %>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora