webForumDet fria alternativet

Varför funkar inte '" & sortera & "' ?

ASP

13 svar · 315 visningar · startad av SannyW

Medlem sedan jan. 2003438 inlägg
Frågan#1

Vad jag försöker göra är sortera på två olika tabeller, försökte först med följande:

Skickade en Request.QueryString med tabellens namn, men det uppskattades.

Visa = "SELECT * FROM '" & sortera & "' WHERE (Hemmalag = '" & sortera1 & "' OR Bortalag = '" & sortera1 & "') ORDER BY namn ASC"

Då ändrade jag och skrev in båda tabellerna som jag ville sortera från, men då fick jag följande:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Drivrutin för ODBC Microsoft Access] Det angivna fältet 'Hemmalag' kan referera till fler än en av de tabeller som är uppräknade i SQL-uttryckets FROM-instruktion.
line 142

<%
IF Request.QueryString = "" THEN  
	sortera1 = "team"
else
	
        strLag = request.querystring("lag")
	If strLag = "" then
  		sortera1 = "ID"
	else
  		sortera1 = strLag
	END IF

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

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

   Visa = "SELECT * FROM tabell1,tabell2 WHERE (Hemmalag = '" & sortera1 & "' OR Bortalag = '" & sortera1 & "') ORDER BY namn ASC"
   RecSet.Open Visa, Connect, 3, 3 
%>
Medlem sedan nov. 20017 144 inlägg
#2

Så här kanske:

 Visa = "SELECT * FROM tabell1 ett ,tabell2 tva WHERE (ett.Hemmalag = '" & sortera1 & "' OR ett.Bortalag = '" & sortera1 & "' OR tva.Hemmalag = '" & sortera1 & "' OR tva.Bortalag = '" & sortera1 & "') ORDER BY ett.namn ASC"
Medlem sedan jan. 2003438 inlägg
#3

Ovanstående funkar inte:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades.

Medlem sedan jan. 2003438 inlägg
#4

Skickade en Request.QueryString med tabellens namn (sortera), men det uppskattades INTE (glömde detta).

Visa = "SELECT * FROM '" & sortera & "' WHERE (Hemmalag = '" & sortera1 & "' OR Bortalag = '" & sortera1 & "') ORDER BY namn ASC"

Söker fortfarande en lösningen i dimman........någon?

Medlem sedan dec. 200012 464 inlägg
#5

Ta bort apostroferna kring tabellnamnet.

Visa = "SELECT * FROM " & sortera &
Medlem sedan jan. 2003438 inlägg
#6

Funkar inte som det skall, den tar "" sortera.

mprog.asp?div=tabell1&lag=team1
mprog.asp?div=tabell2&lag=team1

spelar ingen roll, den hämtar team1 fast den inte borde det. Då team1 inte finns i tabell2. Men den använder sortera i båda fallen.

Dock fungerar det att byta de olika lagen från tabell1.

<%
IF Request.QueryString = "" THEN  
	
	sortera1 = "Team1"
	sortera = "tabell1"
else
	
        strLag = request.querystring("lag")

	If strLag = "" then
  		sortera1 = "ID"
	else
  		sortera1 = strLag
	
	END IF	

	strDiv = request.querystring("div")	
	If strDiv = "" then
  		sortera = "ID"
	else
  		sortera = strDiv
	
	END IF
	
END IF
	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../db/db.mdb")

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

        Visa = "SELECT * FROM " & sortera & " WHERE Hemmalag = '" & sortera1 & "' OR Bortalag = '" & sortera1 & "' ORDER BY datum ASC"	

   
   RecSet.Open Visa, Connect, 3, 3 
%>
Medlem sedan jan. 2003438 inlägg
#7

Kan någon se varför det inte fungerar?

Medlem sedan jan. 20032 285 inlägg
#8

Vad är det som inte fungerar nu? Får du något felmeddelande?

Medlem sedan jan. 2003438 inlägg
#9

Får inget felmeddelande? Den tar bara sortera och går aldrig vidare till

strDiv = request.querystring("div")	
	If strDiv = "" then
  		sortera = "ID"
	else
  		sortera = strDiv
	
	END IF

Måste vara något fel i mitt upplägg av if-satser tror jag...... Men vet inte vad?

Medlem sedan jan. 2003438 inlägg
#10

Blev lite kryptiskt, alltså den hämtar tabell1 hela tiden. skiftar inte till tabell2 trots att jag söker den i request.querystring("div") = tabell2 !

Medlem sedan jan. 20032 285 inlägg
#11
<%
strLag = CStr(Request.QueryString("lag"))
strDiv = CStr(Request.QueryString("div"))

If strDiv <> "" AND strLag <> "" Then
  strSort = strDiv
  strSort1 = strLag
ElseIf strDiv = "" AND strLag = "" Then
  strSort = "ID"
  strSort1 = "ID"
ElseIf strDiv = "" AND strLag <> "" Then
  strSort = "ID"
  strSort1 = strLag
ElseIf strDiv <> "" AND strLag = "" Then
  strSort = strDiv
  strSort1 = "ID"
End If

strSQL = "SELECT * FROM " & strSort & " WHERE Hemmalag = '" & strSort1 & "' OR Bortalag = '" & strSort1 & "' ORDER BY datum ASC"
Set objConn = Server.CreateObject("ADODB.Connection")
Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open strSQL, objConn, 3, 3
%>

Blir det bättre så?

Medlem sedan jan. 2003438 inlägg
#12

NEEEEEEEEEEEEEJ!!! Upptäckte precis att jag är en jubel-IDIOT. Har glömt att redigera tabell2 så tabell1 och 2 innehåller samma uppgifter. Då är det inte lätt att försöka selectera ut något som inte finns.

Stort tack till Sebbe, din kod ser proffsigare ut :)

Medlem sedan mars 20015 287 inlägg
#13

Sebbe: tycker det där verkar vara lite "kaka på kaka"...

<%
strLag = CStr(Request.QueryString("lag"))
strDiv = CStr(Request.QueryString("div"))

If strDiv <> "" Then
  strSort = strDiv
Else
  strSort = "ID"
End If

If strLag <> "" Then
  strSort1 = strLag 
Else
  strSort1 = "ID"
End If

strSQL = "SELECT * FROM " & strSort & " WHERE Hemmalag = '" & strSort1 & "' OR Bortalag = '" & strSort1 & "' ORDER BY datum ASC"
Set objConn = Server.CreateObject("ADODB.Connection")
Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open strSQL, objConn, 3, 3
%>
Medlem sedan jan. 2003438 inlägg
#14

Tack till solbullen, också. Funkar också perfekt!

Nedan följer fullständig kod:

<%

strLag = CStr(Request.QueryString("lag"))
strDiv = CStr(Request.QueryString("div"))

If strDiv <> "" Then
  strSort = strDiv
Else
  strSort = "ID"
End If

If strLag <> "" Then
  strSort1 = strLag 
Else
  strSort1 = "ID"
End If

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../db/db.mdb")
Set objRS = Server.CreateObject("ADODB.Recordset")

strSQL = "SELECT * FROM " & strSort & " WHERE Hemmalag = '" & strSort1 & "' OR Bortalag = '" & strSort1 & "' ORDER BY datum ASC"

objRS.Open strSQL, objConn, 3, 3
%>

<font><b>
<% IF NOT objRS.EOF or NOT objRS.BOF THEN
response.write request.querystring("lag")
Else
response.write "Finns inga poster i databasen!"
End IF %>
</b></font>
<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 objRS.EOF %>

<tr>
<td nowrap align="right"><b><%=objRS("Datum")%></b> <%=objRS("Tid")%></td>  <td><b><%=objRS("Hemmalag")%></b></td>  <td align="center">-</td>  <td><b><%=objRS("Bortalag")%></b></td>  <td nowrap align="center"><b><%=objRS("Resultat")%></b></td>  <td nowrap align="right">&nbsp;</td>  <td nowrap>&nbsp;</td>  </tr><tr><td colspan="7" bgcolor="#E0EBF8"><img src="images/1x1_tom.gif" width="1" height="1" border="0" alt=""></td></tr>  
</tr>

<% 
	x = x+1
	objRS.MOVENEXT
	Loop
	objRS.Close %>

Tackar alla för hjälpen. En ev. utveckling av scriptet är att få div=tabell1 och visa ALLA posterna i tabell1 och skriver man div=tabell2 visas alla ALLA posterna i tabell2.

För nog klura lite............

273 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
136 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
135 ms — ändringar (db)