webForumDet fria alternativet

Sortering "Request.QueryString"?

14 svar · 394 visningar · startad av SannyW

SannyWMedlem sedan jan. 2003438 inlägg
#1

Har problem att få rätt på nedanstående, får ett fellmedd:

Feltyp:
Körningsfel i Microsoft VBScript (0x800A01A8)
Objekt krävs.: ''
test.asp, line 99

Och den linjen är <%Do Until RecSet.EOF %>

Kan någon vara snäll och förklara.........För jag är förlorad, trodde att det skulle fungera med nedanstående och har gjort lite fram och tillbaka. Det som jag hittills har lyckats med är att ha

<% IF Request.QueryString = "Lag1 osv." THEN %>

Men det är ingen kul lösning..........

Hoppas någon kan hjälpa mig, tack på förhand.

Mvh Sanny

<OPTION VALUE="" SELECTED>Välj lag</OPTION>
<OPTION VALUE="test.asp">Lag1</OPTION>
<OPTION VALUE="test.asp?&lag=LAG2">Lag2</a></OPTION>
</SELECT></FORM>

<% IF Request.QueryString = "" THEN %> 
<%	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("../../db/site.mdb")

	Set RecSet = Server.CreateObject("ADODB.Recordset")
   Visa = "SELECT * FROM tabell WHERE (lag = ' Lag1') ORDER BY namn ASC"
   RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %>
<%END IF%>

<% 
strLag = request.querystring("lag")
If strLag = "" then
  sortera = "ID"
else
  sortera = strLag

%>
<%
	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("../../db/site.mdb")

	Set RecSet = Server.CreateObject("ADODB.Recordset")

   Visa = "SELECT * FROM tabell WHERE " & sortera & " ORDER BY namn ASC"
   RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %>
<%END IF%>

<p>Klicka bara på Plus och Minus</p>

<table border="0" cellpadding="0" cellspacing="0"> 
<tr>
<td width="150">Namn</td>
<td></td>
<td width="20" align="center"></td>
<td>Antal</td>
<td width="20" align="center"></td>
<td></td>
</tr>

<%Do Until RecSet.EOF %>
CatZMedlem sedan jan. 20022 440 inlägg
#2
<% IF Request.QueryString = "" THEN %> 
<%	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("../../db/site.mdb")

	Set RecSet = Server.CreateObject("ADODB.Recordset")
   Visa = "SELECT * FROM tabell WHERE (lag = ' Lag1') ORDER BY namn ASC"
   RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %>
[b]<% ELSE %>[/b]

<% 
strLag = request.querystring("lag")
If strLag = "" then
  sortera = "ID"
else
  sortera = strLag

%>
<%
	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("../../db/site.mdb")

	Set RecSet = Server.CreateObject("ADODB.Recordset")

   Visa = "SELECT * FROM tabell WHERE " & sortera & " ORDER BY namn ASC"
   RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %>
[b]<%END IF%>[/b]

<p>Klicka bara på Plus och Minus</p>

<table border="0" cellpadding="0" cellspacing="0"> 
<tr>
<td width="150">Namn</td>
<td></td>
<td width="20" align="center"></td>
<td>Antal</td>
<td width="20" align="center"></td>
<td></td>
</tr>

<%Do Until RecSet.EOF %>
CatZMedlem sedan jan. 20022 440 inlägg
#3

sådär tror jag ska bli rätt. Men varför alla dessa växlingar mella script och html läge ?

SannyWMedlem sedan jan. 2003438 inlägg
#4

Fick inte riktigt rätt på det, för den ville ha ett End IF och när jag slänger in det så skriker den på samma sak igen.

Här kommer hela dokumentet, jag har ett formulär:
Rullista där man kan välja lag.

<--
Här kommer spelare sorterat på lag efter update
-->

Sedan följer ett formulär som uppdaterar:

Namn
Lag
Mal

Just delen som uppdaterar nya spelare finns med hela tiden, medans informationen <-- mellan -->. Ändras efter Request.QuerySting

Hoppas detta svarar på din fråga, alldeles för ny för att kunna säga bu eller bä annars. :q

Se nedan på koden.

<html>

<!-- #include virtual="../adovbs.inc" -->
<SCRIPT LANGUAGE="JavaScript">
<!-- comment out JS

function select_item(name, value) {
    this.name = name;
    this.value = value;
}

function get_selection(select_object) {

    // temporary holder
    contents = new select_item();

    // for every possible option in the SELECT field,
    // find out which items are selected
    for(var i=0;i<select_object.options.length; i++)

    // if this item is selected, copy it's name and value to our
    // temporary holder
    if(select_object.options[i].selected == true) {
        contents.name = select_object.options[i].text;
        contents.value = select_object.options[i].value;
    }
    // return the temporary holder
    return contents;
}

function update_frames(formfield) {

    // figure out which item of snabbval is selected
    selection = get_selection(formfield.snabbval)

    // if item has no value, don't update the frame; otherwise update
    // the frame with the document defined by selection value + ".htm"
    if (selection.value != "" ) {
        parent.location.href = selection.value;
    }
}

function do_nothing() {
    return true
}

// -->

</SCRIPT>

<link rel="stylesheet" type="text/css" href="../../css/leftmenu.css">
<b>Uppdatering skytteligan</b>

<FORM NAME=""><TD align="right" valign="middle"><SELECT valign="middle" NAME="snabbval" SIZE="1" onChange="update_frames(this.form);">
<OPTION VALUE="" SELECTED>Välj lag</OPTION>
<OPTION VALUE="skytteligan.asp">LAG1</OPTION>
<OPTION VALUE="skytteligan.asp?&lag=LAG2">LAG2</a></OPTION>
</SELECT></FORM>

<% IF Request.QueryString = "" THEN %> 
<%	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("../../db/site.mdb")

	Set RecSet = Server.CreateObject("ADODB.Recordset")
   Visa = "SELECT * FROM skytteligan WHERE (lag = 'Utsiktens LAG1) ORDER BY namn ASC"
   RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %>
<% ELSE %>

<% 
strLag = request.querystring("lag")
If strLag = "" then
  sortera = "ID"
else
  sortera = strLag

%>
<%
	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("../../db/site.mdb")

	Set RecSet = Server.CreateObject("ADODB.Recordset")

   Visa = "SELECT * FROM skytteligan WHERE " & sortera & " ORDER BY namn ASC"
   RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %>
<%END IF%>

<p>Klicka bara på Plus och Minus</p>

<table border="0" cellpadding="0" cellspacing="0"> 
<tr>
<td width="150">Namn</td>
<td></td>
<td width="20" align="center"></td>
<td>Antal</td>
<td width="20" align="center"></td>
<td></td>
</tr>

<%Do Until RecSet.EOF %>

<tr>
<td width="150"><% =RecSet("namn") %></td>
<td>&nbsp;</td>
<td width="20" align="center"><a href="up_skytteligan.asp?ID=<% =RecSet("id") %>&kolumn=mal&value=-1"><img src="_.gif" border="0"></A></td>
<td align="center"><% =RecSet("mal") %></td>
<td width="20" align="center"><a href="up_skytteligan.asp?ID=<% =RecSet("id") %>&kolumn=mal&value=--1"><img src="+.gif" border="0"></A></td>
<td width="30" align="right"><a href="del_skytteligan.asp?delID=<%=RecSet("ID")%>"><img src="../bilder/trash.gif" border="0" alt="Ta bort"></a></td>
</tr>
<tr>
<td width="1" colspan="6" bgcolor="#E0EBF8"><img src="images/1x1_tom.gif" width="1" height="1" border="0" alt=""></td>
</tr>

<% 
	RecSet.MoveNext
	Loop
	RecSet.Close %>
</table>

<FORM METHOD="POST" ACTION="ny_skytteligan.asp">
<div align="left">
  <table border="0" cellpadding="5" cellspacing="5" width="300">
    <tr>
      <td width="50%">Namn:</td>
      <td width="50%"><INPUT TYPE="TEXT" NAME="namn"></td>
    </tr>
    <tr>
      <td width="50%">Lag:</td>
      <td width="50%"><SELECT valign="middle" NAME="Lag" SIZE="1">
<OPTION VALUE="" SELECTED>(Inget valt)</OPTION>
<OPTION type="text" name="lag">LAG1</OPTION>
<OPTION type="text" name="lag">LAG2</OPTION>
</select>
    </tr>
<tr>
      <td width="50%">Mål:</td>
      <td width="50%"><INPUT TYPE="TEXT" NAME="mal"></td>
    </tr>

  </table>
</div>
<br>

<INPUT TYPE="submit" name="btn1" value="Skicka till databasen">
</FORM>	 		

</body>
</html>
crisse6Medlem sedan dec. 20002 526 inlägg
#5

men da lagger du till en End IF till?!
/red
Raknar ihop 2 if-satser men du avslutar bara en?!
Sen varfor connectar du till samma databas flera ganger? Helt onodigt! Ska se om jag fixa till din kod lite battre....

SannyWMedlem sedan jan. 2003438 inlägg
#6

Behöver hjälp och förklara gärna varför och var jag tänkt fel.

Tack på förhand, uppskattar all hjälp.

Mvh Sanny

Nytt fel:

Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades.
/ubk/admin/stat/skytteligan.asp, line 84

Och det är linjen:
RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic

i följande:

<% 
strLag = request.querystring("lag")
If strLag = "" then
  sortera = "ID"
else
  sortera = strLag

%>
<%
	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("../../db/site.mdb")

	Set RecSet = Server.CreateObject("ADODB.Recordset")

   Visa = "SELECT * FROM skytteligan WHERE " & sortera & " ORDER BY namn ASC"
   RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %>
<%END IF%>
crisse6Medlem sedan dec. 20002 526 inlägg
#7

Har du lagt till en extra End IF da alltsa?

det ar troligen felmess fran din "VISA" sats... skriv under "VISA = "....blablabla...."
response.write VISA
skriv sedan resultat har....

SannyWMedlem sedan jan. 2003438 inlägg
#8

Fick inte rätt på det du skrev ovan med response.write, men jag har ett exemple när det fungerar som det skall se nedan:

<html>

<!-- #include virtual="../adovbs.inc" -->
<SCRIPT LANGUAGE="JavaScript">
<!-- comment out JS

function select_item(name, value) {
    this.name = name;
    this.value = value;
}

function get_selection(select_object) {

    // temporary holder
    contents = new select_item();

    // for every possible option in the SELECT field,
    // find out which items are selected
    for(var i=0;i<select_object.options.length; i++)

    // if this item is selected, copy it's name and value to our
    // temporary holder
    if(select_object.options[i].selected == true) {
        contents.name = select_object.options[i].text;
        contents.value = select_object.options[i].value;
    }
    // return the temporary holder
    return contents;
}

function update_frames(formfield) {

    // figure out which item of snabbval is selected
    selection = get_selection(formfield.snabbval)

    // if item has no value, don't update the frame; otherwise update
    // the frame with the document defined by selection value + ".htm"
    if (selection.value != "" ) {
        parent.location.href = selection.value;
    }
}

function do_nothing() {
    return true
}

// -->

</SCRIPT>

<link rel="stylesheet" type="text/css" href="../../css/leftmenu.css">
<b>Uppdatering skytteligan</b>

<FORM NAME=""><TD align="right" valign="middle"><SELECT valign="middle" NAME="snabbval" SIZE="1" onChange="update_frames(this.form);">
<OPTION VALUE="" SELECTED>Välj lag</OPTION>
<OPTION VALUE="skytteligan.asp">LAG1</OPTION>
<OPTION VALUE="skytteligan.asp?lag=lag2">lag2</a></OPTION>
</SELECT></FORM>

<% IF Request.QueryString = "" THEN %> 
<%	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("../../db/site.mdb")

	Set RecSet = Server.CreateObject("ADODB.Recordset")
   Visa = "SELECT * FROM skytteligan WHERE (lag = lag1') ORDER BY namn ASC"
   RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %>
<% END IF %>

<% IF Request.QueryString ("lag") = "lag2" THEN %> 
<%
	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("../../db/site.mdb")

	Set RecSet = Server.CreateObject("ADODB.Recordset")

   Visa = "SELECT * FROM skytteligan WHERE (lag = 'lag2')  ORDER BY namn ASC"
   RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %>

<%END IF%>

<p>Klicka bara på Plus och Minus</p>

<table border="0" cellpadding="0" cellspacing="0"> 
<tr>
<td width="150">Namn</td>
<td></td>
<td width="20" align="center"></td>
<td>Antal</td>
<td width="20" align="center"></td>
<td></td>
</tr>

<% 
Do Until RecSet.EOF 
%>

<tr>
<td width="150"><% =RecSet("namn") %></td>
<td>&nbsp;</td>
<td width="20" align="center"><a href="up_skytteligan.asp?ID=<% =RecSet("id") %>&kolumn=mal&value=-1"><img src="_.gif" border="0"></A></td>
<td align="center"><% =RecSet("mal") %></td>
<td width="20" align="center"><a href="up_skytteligan.asp?ID=<% =RecSet("id") %>&kolumn=mal&value=--1"><img src="+.gif" border="0"></A></td>
<td width="30" align="right"><a href="del_skytteligan.asp?delID=<%=RecSet("ID")%>"><img src="../bilder/trash.gif" border="0" alt="Ta bort"></a></td>
</tr>
<tr>
<td width="1" colspan="6" bgcolor="#E0EBF8"><img src="images/1x1_tom.gif" width="1" height="1" border="0" alt=""></td>
</tr>

<% 
	RecSet.MoveNext
	Loop
	RecSet.Close 
%>
</table>

<FORM METHOD="POST" ACTION="ny_skytteligan.asp">
<div align="left">
  <table border="0" cellpadding="5" cellspacing="5" width="300">
    <tr>
      <td width="50%">Namn:</td>
      <td width="50%"><INPUT TYPE="TEXT" NAME="namn"></td>
    </tr>
    <tr>
      <td width="50%">Lag:</td>
      <td width="50%"><SELECT valign="middle" NAME="Lag" SIZE="1">
<OPTION VALUE="" SELECTED>(Inget valt)</OPTION>
<OPTION type="text" name="lag">Lag1</OPTION>
<OPTION type="text" name="lag">Lag2</OPTION>
</select>
    </tr>
<tr>
      <td width="50%">Mål:</td>
      <td width="50%"><INPUT TYPE="TEXT" NAME="mal"></td>
    </tr>

  </table>
</div>
<br>

<INPUT TYPE="submit" name="btn1" value="Skicka till databasen">
</FORM>	 		

</body>
</html>

Men när jag du skall ha ett par lag så vill jag ju inte använda

<% IF Request.QueryString ("lag") = "lag2" THEN %>
<% IF Request.QueryString ("lag") = "lag3" THEN %>
osv.
för då blir det långt, försökte då göra en lösning med &sortera&.

Jag hittar inte riktigt tråden, hoppas du förstår vad jag menar.

crisse6Medlem sedan dec. 20002 526 inlägg
#9

nej, tyvarr... forklara varfor du inte anvander den andra koden? vad blev "VISA" nar du skrev ut den?

solbulleMedlem sedan mars 20015 287 inlägg
#10
<% 
strLag = request.querystring("lag")
If strLag = "" then
  sortera = "ID"
else
  sortera = strLag

	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("../../db/site.mdb")

	Set RecSet = Server.CreateObject("ADODB.Recordset")

   Visa = "SELECT * FROM skytteligan WHERE [b]lag =[/b] " & sortera & " ORDER BY namn ASC"
   RecSet.Open Visa, Connect, 3, 3 
END IF%>

Se det fetmarkerade, stämmer det att kolumnnamnet är lag?

solbulleMedlem sedan mars 20015 287 inlägg
#11

Testa:

<html>

<SCRIPT LANGUAGE="JavaScript">
<!-- comment out JS

function select_item(name, value) {
    this.name = name;
    this.value = value;
}

function get_selection(select_object) {

    // temporary holder
    contents = new select_item();

    // for every possible option in the SELECT field,
    // find out which items are selected
    for(var i=0;i<select_object.options.length; i++)

    // if this item is selected, copy it's name and value to our
    // temporary holder
    if(select_object.options[i].selected == true) {
        contents.name = select_object.options[i].text;
        contents.value = select_object.options[i].value;
    }
    // return the temporary holder
    return contents;
}

function update_frames(formfield) {

    // figure out which item of snabbval is selected
    selection = get_selection(formfield.snabbval)

    // if item has no value, don't update the frame; otherwise update
    // the frame with the document defined by selection value + ".htm"
    if (selection.value != "" ) {
        parent.location.href = selection.value;
    }
}

function do_nothing() {
    return true
}

// -->

</SCRIPT>

<link rel="stylesheet" type="text/css" href="../../css/leftmenu.css">
<b>Uppdatering skytteligan</b>

<FORM NAME=""><TD align="right" valign="middle"><SELECT valign="middle" NAME="snabbval" SIZE="1" onChange="update_frames(this.form);">
<OPTION VALUE="" SELECTED>Välj lag</OPTION>
<OPTION VALUE="skytteligan.asp">LAG1</OPTION>
<OPTION VALUE="skytteligan.asp?&lag=LAG2">LAG2</a></OPTION>
</SELECT></FORM>

<%
IF Request.QueryString = "" THEN  
	sortera = "Utsiktens LAG1"
else

	strLag = request.querystring("lag")
	If strLag = "" then
  		sortera = "ID"
	else
  		sortera = strLag
	END IF
END IF
	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("../../db/site.mdb")

	Set RecSet = Server.CreateObject("ADODB.Recordset")

   Visa = "SELECT * FROM skytteligan WHERE lag = " & sortera & " ORDER BY namn ASC"
   RecSet.Open Visa, Connect, 3, 3 
%>

<p>Klicka bara på Plus och Minus</p>

<table border="0" cellpadding="0" cellspacing="0"> 
<tr>
<td width="150">Namn</td>
<td></td>
<td width="20" align="center"></td>
<td>Antal</td>
<td width="20" align="center"></td>
<td></td>
</tr>

<%Do Until RecSet.EOF %>

<tr>
<td width="150"><% =RecSet("namn") %></td>
<td> </td>
<td width="20" align="center"><a href="up_skytteligan.asp?ID=<% =RecSet("id") %>&kolumn=mal&value=-1"><img src="_.gif" border="0"></A></td>
<td align="center"><% =RecSet("mal") %></td>
<td width="20" align="center"><a href="up_skytteligan.asp?ID=<% =RecSet("id") %>&kolumn=mal&value=--1"><img src="+.gif" border="0"></A></td>
<td width="30" align="right"><a href="del_skytteligan.asp?delID=<%=RecSet("ID")%>"><img src="../bilder/trash.gif" border="0" alt="Ta bort"></a></td>
</tr>
<tr>
<td width="1" colspan="6" bgcolor="#E0EBF8"><img src="images/1x1_tom.gif" width="1" height="1" border="0" alt=""></td>
</tr>

<% 
	RecSet.MoveNext
	Loop
	RecSet.Close %>
</table>

<FORM METHOD="POST" ACTION="ny_skytteligan.asp">
<div align="left">
  <table border="0" cellpadding="5" cellspacing="5" width="300">
    <tr>
      <td width="50%">Namn:</td>
      <td width="50%"><INPUT TYPE="TEXT" NAME="namn"></td>
    </tr>
    <tr>
      <td width="50%">Lag:</td>
      <td width="50%"><SELECT valign="middle" NAME="Lag" SIZE="1">
<OPTION VALUE="" SELECTED>(Inget valt)</OPTION>
<OPTION type="text" name="lag">LAG1</OPTION>
<OPTION type="text" name="lag">LAG2</OPTION>
</select>
    </tr>
<tr>
      <td width="50%">Mål:</td>
      <td width="50%"><INPUT TYPE="TEXT" NAME="mal"></td>
    </tr>

  </table>
</div>
<br>

<INPUT TYPE="submit" name="btn1" value="Skicka till databasen">
</FORM>	 		

</body>
</html>
SannyWMedlem sedan jan. 2003438 inlägg
#12

Tack för att Ni tagit tid med mitt fel crisse6 och solbulle,

svar till crisse6:
När jag försöker få ut VISA så skriker den förfarande på tidigare fel, eller så satte jag in response.write på fel stället. Men jag tror att det var rätt, säger fortfarande:

Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades.
skytteligan.asp, line 77

Och det är linjen:
RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic

Anledningen till min sista lösning crisse6, var bara för att få igång allt. Men jag vill heller få &sortera& till att fungera, mkt bättre lösningen om jag får det att funka.

Sedan solbulle, testade din variant också. Fick fortfarande samma fel, se ovan. Svaret på din fråga om kolumn namn, så JA. Det finns en kolumn som heter lag.

Hmm, får klura på detta en stund.....

@ndersMedlem sedan juni 200032 969 inlägg
#13

Möjligen har du en kolumn som heter lag, däremot saknar du en annan kolumn som du frågar efter, nämligen en kolumn som heter exempelvis LAG2. Felet beror alltså på att du har glömt apostrofer runt värdet, som är av sträng/texttyp.

Så här borde det se ut:

Visa = "SELECT * FROM skytteligan WHERE lag = '" & sortera & "' ORDER BY namn ASC"

Nu har jag visserligen inte mer än sneglat här i koden pga av tidsbrist, så det är mycket möjligt att jag har fel, och det är mycket möjligt jag har missuppfattat problemet.

Mvh,

SannyWMedlem sedan jan. 2003438 inlägg
#14

Där slog någon huvudet på spiken!!! :)

Tack @nders, tänk så enkelt det kan vara...........

Ha en fortsatt bra dag och tack än en gång för det snabba svaret, tack även till crisse6 och solbulle för all hjälp.:)

solbulleMedlem sedan mars 20015 287 inlägg
#15

"Ibland ser man inte skogen för alla träden."

Kanon att det löste sig.

139 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)