Carsten Christensen skrev:
> Jeg har læst her på html.dk om asp,
Lige for en ordens skyld - du er ikke "her" på html.dk. Dine indlæg er
sendt i danske nyhedsgrupper der kan læses på mange forskellige måder -
og mange andre steder end via html.dk.
Se evt. siden her: <
http://html.dk/nyhedsgrupper/usenet.asp>.
> dim rs2,strSQL2,strmaerke
> Set strmaerke = Request.QueryString("fabri")
Her ser det fint ud. Du henter strmaerke fra querystring så den kan
bruges i forespørgslen.
> strSQL2 = "SELECT model FROM bil"
> Set rs2 = cn.Execute(strSQL2)
Men her går det galt. Du bruger ikke strmaerke - du skal jo kun hente de
modeller hvor mærket er strmaerke.
> If not rs2.EOF then
> strSQL2 = "SELECT model FROM bil WHERE
> maerke='strmaerke'"
> Set rs2 = cn.Execute(strSQL2)
Her går det endnu mere galt. Hvis der er poster i dit nye postsæt (rs2),
laver du en ny forespørgsel - denne gang med et kriterie - og lægger den
over i rs2. Din sql-sætning er heller ikke rigtig - du har fået
sql-anførselstegn om strmaerke, men du skal stadig have strmaerke ud af
asp-strengen.
Lige nu har du:
strSQL2 = "SELECT model FROM bil WHERE maerke='strmaerke'"
- som på dansk betyder "hent model-feltet fra bil-tabellen hvor
maerke-feltet har værdien "strmaerke". Da du formentlig ikke har nogen
biler af fabrikatet "strmaerke", returnerer sætningen ingen poster.
Det du skal bruge er:
strSQL2 = "SELECT model FROM bil WHERE maerke='" & strmaerke & "'"
Her bruges der strengsammensætning til at lave en streng hvor *værdien*
af variablen strmaerke indgår. Hvis du har kaldt siden med querystringen
"fabri=Ford", vil strSQL2 blive til:
SELECT model FROM bil WHERE maerke='Ford'
- og dén sætning giver mening når den køres i databasen.
> End If Do
Her skal du have "Do" ned på en ny linje.
> Response.Write "<option>" & rs2("model") & "</option>"
> rs2.MoveNext
> Loop While Not rs2.EOF %>
En generel rettesnor ved databaseløkker - det er en fordel at have
kriteriet først. Når du skriver:
Do
...
Loop While Not rs.EOF
- vil løkken altid køre én gang, hvilket vil resultere i en fejl hvis
postsættet er tomt.
Skriver du i stedet:
Do While Not rs.EOF
...
Loop
- springes løkken helt over hvis postsættet er tomt. Det er oftest en
fordel.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på
http://usenet.dk/netikette/citatteknik.html