webForumDet fria alternativet

Hur många i varje åldersgrupp?

ASP

5 svar · 294 visningar · startad av Silve

Medlem sedan aug. 200214 inlägg
Frågan#1

Tjenare!
Har alla medlemmars åldrar i rätt tal.
T ex 18, 19 osv.....
Skall ta ut alla som är mellan 18-25, 26-30 osv....
Hur gör jag detta för att vara så skonsam som möjligt mot servern?
Måste jag göra en dbkoppling för varje eller kan jag göra på något lättare sätt??

Tacksam för svar!

Medlem sedan mars 20033 686 inlägg
#2

Jag slängde ihop ett litet exempel nu såhär på natten.

<form name="skicka" method="post" action="tester.asp">
Mellan:
<input type="text" name="alder1" size="3" value="">
och
<input type="text" name="alder2" size="3" value="">
<input type="submit" value="Sök">
</form>

<%
   If Request.Form("alder1") > 0 AND Request.Form("alder2") > 0 Then

   Set db = Server.CreateObject("ADODB.Connection")
   db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("alder.mdb")
   SQL = "SELECT * FROM aldrar WHERE aldrar > " & Request.Form("alder1") & " AND aldrar < " & Request.Form("alder2") & ""
   Set rs = db.Execute(SQL)

   Do until rs.EOF
%>

   <%=rs("aldrar")%><br />

<%
   rs.MoveNext
   Loop

   Else
   Response.Write "Fyll i en ålder"
   End If
%>

Först kollar vi om strängen innehåller något. Om den inte gör det skriver vi ut meddelandet "Fyll i en ålder". Så vi slipper felmeddelandet om att strängarna inte innehåller något.

SQL-koden:

SELECT * FROM aldrar WHERE aldrar > " & Request.Form("alder1") & " AND aldrar < " & Request.Form("alder2") & ""

I klarspråk; Ta fram alla poster där värdet i tabellen aldrar är mer (>) än värdet som skrevs in i första textboxen och mindre (<) än värdet i den andra textboxen.

Hoppas det hjälpte något.

/Magnus

REDIDERING Där du självklart kan ersätta textboxarna med en selectlist eller något som passar in. :)

Medlem sedan maj 200010 687 inlägg
#3

Ett tips är att använda sig utav BETWEEN. Gäller dock istället för <= jämförelse. Känns dock vettigare med <= jämförelse. :)

SELECT * FROM aldrar WHERE aldrar BETWEEN " & Request.Form("alder1") & " AND " & Request.Form("alder2")
Medlem sedan dec. 1999707 inlägg
#4

Eller för att få ut varje åldergrupp i samma sql-fråga:

SELECT	'10-14' AS Alder, count(*) AS Antal	FROM	aldrar	WHERE	alder BETWEEN 10 AND 14
UNION
SELECT	'15-17', count(*)	FROM	aldrar	WHERE	alder BETWEEN 15 AND 17
UNION
SELECT	'18-25', count(*)	FROM	aldrar	WHERE	alder BETWEEN 18 AND 25
UNION
SELECT	'26-30', count(*)	FROM	aldrar	WHERE	alder BETWEEN 26 AND 30
UNION
SELECT	'31-35', count(*)	FROM	aldrar	WHERE	alder BETWEEN 31 AND 35
UNION
SELECT	'36-40', count(*)	FROM	aldrar	WHERE	alder BETWEEN 36 AND 40
Medlem sedan mars 20033 686 inlägg
#5

toha: Går det inte lika bra att istället köra med strängar? Jag menar, så slipper man skapa en sådan rad för varje tal man vill söka emellan. Eller missuppfattade jag?

Medlem sedan dec. 1999707 inlägg
#6

Det var nog jag som missuppfattade frågan. Jag trodde man ville få ut fasta åldersuppgifter.

Helt klart onödigt med min sträng om man ska låta användaren skriva ett åldersintervall.

258 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)