webForumDet fria alternativet

Välja omgångar med dropdown

ASP

34 svar · 583 visningar · startad av Ralle

Medlem sedan feb. 2003210 inlägg
Frågan#1

SELECT DISTINCT Omgang AS Omg FROM Elitserien_2002_2003

Den använder jag för att ta ut omgångarna.

Jag har lagt upp en dropdown på samma sida.

Hur gör jag för att få in värdena i dropdown-listan?

För att välja sen kan man väl använda IF-satser?

Medlem sedan maj 20023 372 inlägg
#2

Jag hade gjort såhär. :)

<% SELECT DISTINCT Omgang FROM Elitserien_2002_2003 %>
<% RecSet.Open SQL, Databas, 3, 3 %>

<%If RecSet.EOF Then %>
Ingen omgång funnen
<%Else%>
<select name="valt">
<option selected><%=Recset("Omgang")%></option>
<%End if%>

<% Do until RecSet.EOF %>
<option><%=Recset("Omgang")%></option>
<%Recset.movenext
loop %>
</select>

Den valda omgången hamnar sedan i variabeln "valt".

Medlem sedan mars 20023 561 inlägg
#3

Lite snyggare:

<%
strSQL = "SELECT DISTINCT Omgang FROM Elitserien_2002_2003"
Set RecSet = Server.Createobject("adodb.RecordSet")
RecSet.Open strSQL, [i]Connection[/i], 1, 2

If RecSet.EOF Then
     Response.Write("Ingen omgång funnen")
Else
     Response.Write("<SELECT name=""valt"">")
     Do until RecSet.EOF
          Response.Write("<OPTION>" & RecSet("omgang") & "</OPTION>")
          RecSet.MoveNext
     Loop
     Response.Write("</SELECT>")
End If

Set RecSet = Nothing
%>
Medlem sedan dec. 20002 526 inlägg
#4

Haller med Josef, varfor Pellefant har du gjort tva option?

r/ sag nu, en var selected... men tycker det blir konstigt da, for du kommer fa tva av samma da... ;)

Medlem sedan maj 20023 372 inlägg
#5

Ja, det har du rätt i.

Om min kod används, kasta in ett "Recset.movenext" efter End if raden.

Medlem sedan feb. 2003210 inlägg
#6

Jag valde Josef's kod, då fick jag det här felmeddelandet:

\* Feltyp:
  ADODB.Recordset (0x800A0BB9)

Parametrarna är felaktiga, ligger utanför tillåtet intervall eller skapar en inbördes konflikt.

Den hänvisar till den här raden:

RecSet.Open strSQL, Connection, 1, 2

Medlem sedan juni 200032 967 inlägg
#7

Antingen heter inte din variabel med SQL-frågan strSQL eller så har du inget connectionobjekt med namnet connection, verkar det som.

Medlem sedan mars 20023 561 inlägg
#8

Jag använde ju kursiv stil för att du skulle veta att du behövde ersätta det med dina egna instanser. ;)

Medlem sedan feb. 2003210 inlägg
#9

Så här ser databaskopplingen ut i alla fall:

Set objConnect = Server.CreateObject("ADODB.Connection")
objConnect.Open "Driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../databas/Ishockey.mdb")& ";"
strSQL1="SELECT DISTINCT Omgang AS Omg FROM Elitserien_2002_2003"
Set objConnect = Server.Createobject("adodb.RecordSet")
rstOmg.Open strSQL1, objConnect, 1, 2

Jo, jag ändrade men måste ha missat något.

Medlem sedan mars 20023 561 inlägg
#10
Set objConnect = Server.CreateObject("adodb.Connection")
objConnect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= "& Server.MapPath("../databas/Ishockey.mdb")
strSQL1 = "SELECT DISTINCT Omgang As Omg FROM Elitserien_2002_2003"
Set [b]rstOmg[/b] = Server.CreateObject("adodb.RecordSet")
[b]rstOmg[/b].Open strSQL1, objConnect, 1, 2
Medlem sedan feb. 2003210 inlägg
#11

Jag vet det kanske inte hör hemma här, men.

Vad är skillnaden på dom olika kopplingarna?

Jag har ytterligare en, då måste jag väl ändra på den?

Den ser ut så här:
Set rstResultat=objConnect.Execute(strSQL)

Medlem sedan feb. 2003210 inlägg
#12

Jag får det här felet nu:
* Feltyp:
ADODB.Recordset (0x800A0CC1)
Objektet kunde inte hittas i mängden med det begärda namnet eller numret.

Response.Write("<OPTION>" & rstOmg("omgang") & "</OPTION>")

Ni kan bortse från det här inlägget jag hittade felet.

Det ska stå "Omg" i stället för "omgang".

Medlem sedan juni 200032 967 inlägg
#13

Det finns inget fält i ditt recordset som heter omgang. I SQL-frågan ovan ger du fältet alias omg, så det är det namnet du ska använda.

mvh

Medlem sedan feb. 2003210 inlägg
#14

Okey, nu har jag fått drop'en att fungera.

Sen har jag en SQL med where.

WHERE omgang=valdomgang

Men den får inget värde.

Hur får jag det?

Medlem sedan maj 20023 372 inlägg
#15

Om valdomgang är en sträng

....WHERE omgang=" & "'" valdomgang  "'"

Om valdomgang är en int

....WHERE omgang=" &  valdomgang

Tror jag, proffsen här får rätta om det är fel.

Medlem sedan mars 20015 287 inlägg
#16

Pellefant skrev:

Om valdomgang är en sträng

....WHERE omgang=" & "'" valdomgang  "'"
....WHERE omgang='" &  valdomgang  & "'"

Du ser till att valdomgang får sitt värde genom:

 valdomgang  = request.form("valdomgang")

OM din selectlista/meny heter valdomgang.

Medlem sedan feb. 2003210 inlägg
#17

Så här ser det ut:

     Response.Write("<SELECT name=""valdomgang"">")
     Do until rstOmg.EOF
          Response.Write("<OPTION>" &"Omgång " & rstOmg("Omg") & "</OPTION>")
          rstOmg.MoveNext
     Loop
     Response.Write("</SELECT>")
Medlem sedan feb. 2003210 inlägg
#18

Jag har aldrig jobbar med dropdown förut, så det snällt om någon kunde visa var jag ska placera dom olika kodsnuttarna.

Så här ser slutet på SQL'en ut:

WHERE omgang=" & "'" valdomgang  "'" ORDER BY Datum

Jag får det här felet då:
* Feltyp:
Kompileringsfel i Microsoft VBScript (0x800A0401)
Slut på programsats förväntas.

Medlem sedan mars 20015 287 inlägg
#19

Som jag skrev, Pellefant hade missat ett &

WHERE omgang='" &  valdomgang  & "' ORDER BY Datum"

Samt om du inte fångar upp formuläret någon annastans kan du skriva så här:

WHERE omgang='" &  request.form("valdomgang")
& "' ORDER BY Datum"

Vidare skulle iofs jag vilja ändra din formulärskod till:

Response.Write("<SELECT name=""valdomgang"">")
     Do until rstOmg.EOF
          Response.Write("<OPTION value=""" & rstOmg("Omg") & """>" &"Omgång " & rstOmg("Omg") & "</OPTION>")
          rstOmg.MoveNext
     Loop
     Response.Write("</SELECT>")

Om din databas är skapt som jag gissar att den är.
Vidare antar jag att du har sedvanlig kod för att posta formuläret med, samt ev. koll att värden finns för att köra din sqlsats även första gången någon besöker sidan.

Medlem sedan feb. 2003210 inlägg
#20

Den där koden är den enda jag har, som har med dropdownen att göra.

Jag skrev ju att jag är en riktig nybörjare.

Jag har en tilldelningssats för att kunna köra första gången någon besöker sidan. Sen kollar den en IF för att välja mellan två olika SQL.

En som visar alla omgångar som finns inlagda o så den väljer omgång.

260 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)