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"
13 svar · 315 visningar · startad av SannyW
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
%>
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"
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.
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?
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
%>
Kan någon se varför det inte fungerar?
Vad är det som inte fungerar nu? Får du något felmeddelande?
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?
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 !
<%
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å?
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 :)
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
%>
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"> </td> <td nowrap> </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............