Avatar billede kkd Nybegynder
22. juli 2003 - 12:16 Der er 22 kommentarer og
1 løsning

Udregne alder

Hej...

Jeg vil gerne lave en lille funktion, på en medlemsliste, der hele tiden holder medlemmernes alder opdateret.
I et Dato/Klokkeslet access felt står deres fødslesdato, og jeg vil gerne have deres alder skrevet ud...
Altså noget med at trække dags dato fra deres fødselsdag, og så poste svaret i hele år!
Kan det lade sig gøre?
Avatar billede erikjacobsen Ekspert
22. juli 2003 - 12:23 #1
I pseduokoded:
Dags dato: idagaar,idagmaaned,idagdag
Født: aar,maaned,dag

  alder = idagaar-aar
  if idagmaaned<maaned OR (idagmaaned=maaned AND dag<idagdag) then
    alder=alder-1
  end if
Avatar billede nmh Nybegynder
22. juli 2003 - 12:23 #2
Ja, det skulle være ret let.
Jeg svarer om et lille øjeblik.
Avatar billede dk_akj Nybegynder
22. juli 2003 - 12:24 #3
prøv lige med response.write cint(now() - rs("føsda"))

//akj
Avatar billede dk_akj Nybegynder
22. juli 2003 - 12:24 #4
nmh >> Hvorfor i alverden laver du det som et svar ??

//akj
Avatar billede jytte Nybegynder
22. juli 2003 - 12:29 #5
Måske kan følgende bruge ?

alder = DateDiff("yyyy", Now, BirthDate)
Avatar billede nmh Nybegynder
22. juli 2003 - 12:31 #6
dateDiff("d",dato1,dato2) skulle udregne differensen
dato2 - dato1 i dage.
Avatar billede nmh Nybegynder
22. juli 2003 - 12:32 #7
dk_akj> Undskyld, jeg kom til at trykke galt.
Avatar billede erikjacobsen Ekspert
22. juli 2003 - 12:32 #8
Han skulle bruge alderen i aar, nmh.
Avatar billede jytte Nybegynder
22. juli 2003 - 12:38 #9
Jeg trækker min kommentar tilbage -- datediff var ikke så avanceret som jeg troede.
Avatar billede nmh Nybegynder
22. juli 2003 - 12:43 #10
Jyttes er det rigtige: datediff("yyyy",BirthDate,Now)
så er fortegnet rigtigt.
F.eks. vil datediff("yyyy","1992/10,13",Now)
give 11
Avatar billede dk_akj Nybegynder
22. juli 2003 - 12:45 #11
Nix, den vil bare sige at personen fylder X år i indeværende kalenderår.

det er irik pseudokode der er rigtig. (igen.....)

//akj
Avatar billede erikjacobsen Ekspert
22. juli 2003 - 12:46 #12
Nemlig, dk_akj. Fx giver

  datediff("yyyy","2002/10/13",Now)

1 selv om personen er 0 år gammel
Avatar billede nmh Nybegynder
22. juli 2003 - 12:48 #13
datediff forventer på min maskine formatet yy/mm/dd
Avatar billede erikjacobsen Ekspert
22. juli 2003 - 12:48 #14
PS: Jeg skal ikke have point for mn pseudokode, men hvis der er nogen,
der gider oversætte den til ASP/VB/Jscript - eller hvad brugeren nu vil have -
så er der sikkert et par point at tjene.... :)
Avatar billede eagleeye Praktikant
22. juli 2003 - 12:49 #15
erikjacobsen pseudokode oversat til "rigtig" kode:

  maaned = Month(rs("fødslesdatoKolonne")
  dag = Day(rs("fødslesdatoKolonne"))
  alder = Year(date)-Year(rs("fødslesdatoKolonne"))
  if Month(Date)<maaned OR (Month(Date)=maaned AND Day(date)<dag) then
    alder=alder-1
  end if
Avatar billede dk_akj Nybegynder
22. juli 2003 - 12:50 #16
Med udgangspunkt i Erik's idé :-)

//akj

<%
set rs = conn.execute ("select * from foesda")

response.write  "født " & rs("foesda") & "<br>"

alder = year(now()) - year(rs("foesda"))

ty = dateadd("yyyy",alder,rs("foesda")  )

if ty > now() then
  alder = alder - 1
end if
response.write alder  & "<br>"

%>
Avatar billede kkd Nybegynder
22. juli 2003 - 12:51 #17
Jeg vil gerne have den skrevet til asp kode
Avatar billede dk_akj Nybegynder
22. juli 2003 - 12:53 #18
kkd >> ASP kan skrives i både vbscript og jscript.
Mit eks. herover er lavet i vbscript.

//akj
Avatar billede hossein Nybegynder
22. juli 2003 - 12:54 #19
her er et ex:
<%
AlderDay = 10    'disse kan du shifte ud med fx: day(rs("fdato"))
AlderMonth = 12
AlderYear = 1960

dtBirthdate = alderday & "-" & aldermonth & "-" & alderYear
intAge = datediff("yyyy", dtBirthdate,now)

'Træk en fra hvis dag og måned (fødselsdag) er mindre end den actualle måned og dag:

If Date < DateSerial(Year(Now), Month(dtBirthdate), Day(dtBirthdate)) Then
intAge = intAge - 1
End If

response.write intAge
%>
Avatar billede dk_akj Nybegynder
22. juli 2003 - 13:01 #20
Her er mit eksempel med kommentarer.

<%
' opret recordset med data, foesda er et felt i tabellen foesda af datatypen datetime
set rs = conn.execute ("select foesda from foesda")

' skriv fødselsdatoen
response.write  "født " & rs("foesda") & "<br>"

' hvor mange år er det siden ??
alder = year(now()) - year(rs("foesda"))

' læg antal år til fødselsdato
ty = dateadd("yyyy",alder,rs("foesda")  )

' hvis datoen beregnet herover er > nu har personen ikke haft fødselsdag endnu i år.
if ty > now() then
  ' vi trækker derfor 1 år fra.
  alder = alder - 1
end if

' udskriv alder.
response.write alder  & " år.<br>"

%>

//akj
Avatar billede kkd Nybegynder
22. juli 2003 - 13:07 #21
Hov... der kludrede jeg sgu da i det.... Det er akj's foreslag jeg har brugt, og det virker perfekt!

Jeg håber du kan leve med mine klumsede fingre!
Avatar billede kkd Nybegynder
22. juli 2003 - 13:08 #22
Akj's er lettere tilgængeligt for en novice som mig, selvom hosseins svar sikkert også er rigtigt!'
Avatar billede dk_akj Nybegynder
22. juli 2003 - 13:47 #23
Du fik det til at virke og der er trods alt det vigtigste :-)

Det er jo "bare" point.

//akj
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester