Avatar billede jens_k Nybegynder
18. marts 2003 - 15:31 Der er 21 kommentarer og
1 løsning

Beregning af Alder

Hej

Jeg har 3 kolonner i en access database.

AlderDay
AlderMonth
AlderYear

Som f.eks giver : 22/09/1983

Jeg vil så gerne have en søgerutine på min side, så jeg kan søge på alle fra 10-20 år.

Hvordan får jeg SQL sætningen sat sammen ?

Jens K
Avatar billede dk_akj Nybegynder
18. marts 2003 - 15:57 #1
er de 3 kolloner hhv årstal f.eks 1975 måned (11) og dag (29) ??
//akj
Avatar billede dk_akj Nybegynder
18. marts 2003 - 16:03 #2
Hvis den er det kan du kombinere de 3 til en dato sådan:
SELECT  DateSerial(alderyear, aldermonth,alderday) from alder as mydate;

//akj
Avatar billede Spotgun Seniormester
18. marts 2003 - 16:03 #3
Det ville være langt nemmere at sortere på, hvis du i stedet for dine 3 kolonner lavede 1 kolonne med fødselsdatoen på følgende format: dd-mm-åååå.

Men hvis du vil klare det på den nuværende måde, så kan du da spore dig frem til årstallene sådan her:

20_aar_gammel = Year(DateAdd("yyyy", -20, Date()))
10_aar_gammel = Year(DateAdd("yyyy", -10, Date()))

Og så bruge de variabler i din SQL-sætning. Hvis den skal være helt præcis, skal du jo huske at ta' højde for hvornår på året de er født (dvs. om de er fyldt 10/20 i det nuværende år).
Avatar billede jens_k Nybegynder
18. marts 2003 - 16:14 #4
Under mig selv er det f.eks :

AlderDay = 22
AlderMonth = 9
AlderYear = 1983


Jeg forstår ikke hvad du mener spotgun, jeg er ikke så skarp i det med datoere og ASP.

Jens K
Avatar billede Spotgun Seniormester
18. marts 2003 - 16:37 #5
Det hele bunder vel i, hvor præcist du vil være i din definition af "mellem 10 og 20 år". Skal det være folk som er præcist mellem 10 og 20 år (begge år inklusive) eller er det nok at folk fylder 10 i det indeværende år (dvs. i år, men senere end dags dato?)?

Uanset hvad, så ville det være væsentligt nemmere for dig at koble alle tre felter sammen i et dato-felt. Så vil du kunne sige, at søgningen skulle dække fra en bestemt dato, måned og år - til en bestemt dato, måned og år.
Avatar billede jens_k Nybegynder
18. marts 2003 - 16:41 #6
Ja, men det kan jeg desværre ikke..

Det kan da ikke passe at det ikke kan lade sig gøre ?

Jens K
Avatar billede jens_k Nybegynder
18. marts 2003 - 16:41 #7
Og det skal være begge år inklusiv..
Avatar billede Spotgun Seniormester
18. marts 2003 - 16:44 #8
Jo, det burde godt kunne lade sig gøre, men det bliver i mine øjne frygteligt bøvlet, og jeg kan ikke lige overskue at skrue en løsning sammen lige nu :-/
Avatar billede soes Nybegynder
18. marts 2003 - 18:13 #9
har dk_akj ikke gang i noget brugbart?

SELECT DateSerial(alderyear, aldermonth,alderday) As datDates from alder WHERE datDates BETWEEN DateAdd("yyyy", -20, " & Date() &") AND DateAdd("yyyy", -10, "& Date() &")

ved ikke om det virker, er ikke saa skrap til SQL
Avatar billede hossein Nybegynder
18. marts 2003 - 19:21 #10
Da du skal beregne alder kan du hente felterne: AlderDay, AlderMonth og AlderYear. Også formatere dem som dd-mm-yyyy og ved hjælp af en if sætning gi adgang til dem som deres alder ligger mellem 10-20:

<%
AlderDay = 22
AlderMonth = 9
AlderYear = 1995

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

if (intage > 10 and intage < 21) then
        response.write intAge
else
        Response.Write "Du er ikke mellem 10 - 20 år gammel."
end if
%>
Avatar billede hossein Nybegynder
18. marts 2003 - 20:40 #11
Det kan også gøres på en anden måde, at du laver en forspørgsel i msAccess som får navnet minAlder:
SELECT Tabel1.Alderday, Tabel1.AlderMonth, Tabel1.AlderYear, [Tabel1.AlderDay] &"-"& [Tabel1.AlderMonth] &"-"& [Tabel1.AlderYear] AS Fodselsdag, (year(now) - (year(fodselsdag))) AS alder
FROM Tabel1;

også på asp siden kalder du den:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("minDB.mdb")
Conn.Open strDSN
Set RS1 = Server.CreateObject("ADODB.Recordset")
strQ1 = "select alder from minalder where alder between 10 and 20"
RS1.Open strQ1, strDSN

rs1.MoveFirst
do while not rs1.eof%>
<%=rs1("alder")%>
<%RS1.MoveNext
loop
%>
Avatar billede jens_k Nybegynder
19. marts 2003 - 19:21 #12
Hej Hossein.

Kan du ikke prøve at lave en database til mig, hvor du laver en forspørgsel i MSAccess ?

Jens K
Avatar billede hossein Nybegynder
19. marts 2003 - 21:25 #13
Jo det kan jeg godt.
Avatar billede jens_k Nybegynder
20. marts 2003 - 10:22 #14
Gider du at ligge den op et sted så jeg kan hente den ? :)

Jens K
Avatar billede hossein Nybegynder
20. marts 2003 - 10:41 #15
Skal jeg lave en db med de felter som du har day month year og beregning af alder?

If Ja then
  Læg din email adresse så sender jeg en db til dig
end IF
Avatar billede dk_akj Nybegynder
20. marts 2003 - 11:57 #16
Husk at løsninger skal være tilgængelige for alle på E.

//akj
Avatar billede jens_k Nybegynder
20. marts 2003 - 11:59 #17
Du kan sende databasen til :

jens@xl-import.com

Mvh

Jens K
Avatar billede hossein Nybegynder
20. marts 2003 - 12:06 #18
Løsningen er ikke andet end som jeg har beskrevet tidligere: 18/03-2003 20:40:42

Jens K Jeg kan lave i msAccess XP (2000 format) er det OK!
Avatar billede jens_k Nybegynder
20. marts 2003 - 12:15 #19
Ja det er helt fint..
Avatar billede hossein Nybegynder
20. marts 2003 - 12:17 #20
sent!
Avatar billede jens_k Nybegynder
20. marts 2003 - 12:21 #21
Kan jeg ikke lige få dig til at sende den engang til, men venligst pak den som Zip.

Jeg kan ikke modtage filer som MDB osv..

Jens K
Avatar billede hossein Nybegynder
20. marts 2003 - 12:25 #22
ok!
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