R Ralle Medlem sedan feb. 2003 210 inlägg Frågan 4 mars 2003 22:11 #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?
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".
J Josef Medlem sedan mars 2002 3 561 inlägg 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
%>
crisse6 Medlem sedan dec. 2000 2 526 inlägg 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... ;)
Ja, det har du rätt i.
Om min kod används, kasta in ett "Recset.movenext" efter End if raden.
R Ralle Medlem sedan feb. 2003 210 inlägg 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
@nders Medlem sedan juni 2000 32 967 inlägg Antingen heter inte din variabel med SQL-frågan strSQL eller så har du inget connectionobjekt med namnet connection , verkar det som.
J Josef Medlem sedan mars 2002 3 561 inlägg Jag använde ju kursiv stil för att du skulle veta att du behövde ersätta det med dina egna instanser. ;)
R Ralle Medlem sedan feb. 2003 210 inlägg 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.
J Josef Medlem sedan mars 2002 3 561 inlägg 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
R Ralle Medlem sedan feb. 2003 210 inlägg 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)
R Ralle Medlem sedan feb. 2003 210 inlägg 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".
@nders Medlem sedan juni 2000 32 967 inlägg 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
R Ralle Medlem sedan feb. 2003 210 inlägg 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?
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.
S solbulle Medlem sedan mars 2001 5 287 inlägg
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.
R Ralle Medlem sedan feb. 2003 210 inlägg 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>")
R Ralle Medlem sedan feb. 2003 210 inlägg 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.
S solbulle Medlem sedan mars 2001 5 287 inlägg 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.
R Ralle Medlem sedan feb. 2003 210 inlägg 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.