Avatar billede kisbye Nybegynder
18. maj 2004 - 11:33 Der er 10 kommentarer og
1 løsning

Udregning af fødselsdag.

Kære Eksperter.
Jeg her et problem, som jeg håber i kan være behjælpelig med.

Jeg er ved at lave et system som skal give besked når en bruger har fødselsdag.

Jeg har prøvet at udregne brugens alder ved hjælp af datediff
på følgende måde:

GetBirthdayYear = DateDiff("yyyy", BDate, formatdatetime(now,vbshortdate) ,vbmonday)

Bdate er den dato brugeren er født.
Der sammenlignes med dags dato.

Problemet er så at datediff åbenbart kun kigger på årstallet, ikke på hele datoen.
Så alle brugere vil fylde år den første januar.

Håber der er nogle af jer der kan hjælpe.
Så vil jeg tage hatten af :)
Avatar billede nmh Nybegynder
18. maj 2004 - 11:44 #1
Hvis Bdate er konverteret til date kan du gøre således:
if day(Bdate)= day(now) and month(Bdate)=month(now) then
'personen har fødselsdag i dag
end if

hvis Bdate f.eks. er tekststrengen "18-05-1956" skriv først
Bdate=Cdate(Bdate)
Avatar billede kisbye Nybegynder
18. maj 2004 - 12:14 #2
jeg gør noget ligende, og det virker fint.
Problemet er at udregne hvor meget brugeren fylder.
Avatar billede nmh Nybegynder
18. maj 2004 - 12:40 #3
Prøv dette:
Fdato=cdate("17-05-2003")

alder=year(now)-year(Fdato)
if Cint(month(Fdato))<Cint(month(now)) then
  alder=alder-1
elseif Cint(month(Fdato))=Cint(month(now)) and Cint(day(now))<Cint(day(Fdato)) then
  alder=alder-1
end if

Nu er alderen korrekt.
Avatar billede nmh Nybegynder
18. maj 2004 - 13:14 #4
Det skule have været et svar.
Avatar billede kisbye Nybegynder
18. maj 2004 - 13:30 #5
Det ser ud til at den regner en over, men ellers virker det perfekt.

Mange tak for hjælpen.
Avatar billede nmh Nybegynder
18. maj 2004 - 13:50 #6
Selv tak, det var så lidt. Takker for point.

Jeg forstår ikke, det du siger, om at den regner 1 over.
Ovenstående programstump giver da den korrekte alder 1 år.
Ændres datoen til 19-05-2003 fås 0 år.
Avatar billede kisbye Nybegynder
18. maj 2004 - 14:01 #7
ja, det forstår jeg heller ikke.

en fødselsdag på datoen 25-11-1981 skulle give 22, men giver 23.
men med en alder på 1 år, virker det fint.

meget underligt.
Avatar billede nmh Nybegynder
18. maj 2004 - 14:48 #8
Ja, jeg kom desværre til at lave en lille fejl. Det skal være sådan:

Fdato=cdate("25-11-1981")
alder=year(now)-year(Fdato)
if Cint(month(now))<Cint(month(Fdato)) then
  alder=alder-1
elseif Cint(month(Fdato))=Cint(month(now)) and Cint(day(now))<Cint(day(fdato)) then
  alder=alder-1
end if
Avatar billede nmh Nybegynder
18. maj 2004 - 14:54 #9
Nu mener jeg, at have testet det grundigt. :o)
Avatar billede kisbye Nybegynder
18. maj 2004 - 18:26 #10
Ja, det virker bare perfekt :D

Endnu engang, tak for hjælpen.
Avatar billede nmh Nybegynder
18. maj 2004 - 19:46 #11
Det glæder mig at høre.
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