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??
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. :)
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
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?