Jag håller på med ett skriptarkiv, som skripten delas in i olika kategorier.
Kategorierna är i en tabell för sig, och skripten i en tabell för sig.
Följande kod funkar inte
<%
dim strColor
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=Microsoft.JET.OLEDB.4.0; Data Source=" & DB_Webben
Set RecSet = Server.CreateObject("ADODB.Recordset")
Set Categories = Server.CreateObject("ADODB.Recordset")
Categories.Open "SELECT * FROM S_Categories ORDER BY Cat_Position DESC", Conn, adOpenStatic, adLockOptimistic
Do Until Categories.EOF
RecSet.Open "SELECT * FROM S_Tutorials WHERE typeID="&Categories("ID")&" ORDER BY "&order&" "&how& "", Conn, adOpenStatic, adLockOptimistic '<---- Rad 96
if RecSet.EOF Then
Response.Write("<tr><td colspan=""5"">No Tutorials at the moment</td></tr>")
else
strColor = "#FFFFFF"
Do Until RecSet.EOF
if strColor = "#F4F4F4" Then
strColor = "#FFFFFF"
else
strColor = "#F4F4F4"
end if
%>
<tr style="background-color:<%=strColor%>;">
<td><%=RecSet("ID")%></td>
<td>» <a href="default.asp?c=grey&hp=w&action=readArticle&artID=<%=RecSet("ID")%>&s=<%=RecSet("sStatus")%>" target="_self" onMouseOver="window.status='Read the Article'; return true" onMouseOut="window.status='Zanathel.tk'; return true"><%=RecSet("Caption")%></a></td>
<td><%=RecSet("Date")%></td>
<td><%=Categories("Cat_Name")%></td>
<td><%=RecSet("Author")%></td>
</tr>
<%
RecSet.MoveNext
loop
'<------ HÄR SKA RECSET.CLOSE VARA JU :)
end if
Categories.MoveNext
Loop
Categories.Close : Set Categories = Nothing
[b]RecSet.Close[/b] : Set RecSet = Nothing 'RECSET FLYTTA UPPÅT
Conn.Close : Set Conn = Nothing
%>
Hur gör jag ?
MVH
Wickmark
EDIT:
Felmess:
ADODB.Recordset error '800a0e79'
Operation is not allowed when the object is open.
Hmm... Du borde få ett felmeddelande på Set Categories = Server.CreateObjec("ADODB.Recordset"). Eller har t:et ramlat bort när du klistrade in koden?
Hur ser koden ovanför det här kodblocket ut?
Precis över är det mest HTML kod, fast längst upp finns följande rader:
<%
dim iTotorials
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=Microsoft.JET.OLEDB.4.0; Data Source=" & DB_Webben
Set RecSet = Server.CreateObject("ADODB.Recordset")
RecSet.Open "SELECT * FROM S_Tutorials", Conn, adOpenStatic, adLockOptimistic
if RecSet.EOF Then
iTutorials = 0
else
iTotorials = RecSet.RecordCount
end if
RecSet.Close : Set RecSet = Nothing
Conn.Close : Set Conn = Nothing
dim order
dim how
dim order_visual
dim how_visual
if Request.QueryString("o") = "" Then
order = "TypeID"
order_visual = "Category"
elseif Request.QueryString("o") = "1" Then
order = "ID"
order_visual = "ID"
elseif Request.QueryString("o") = "2" Then
order = "Caption"
order_visual = "Name"
elseif Request.QueryString("o") = "3" Then
order = "Date"
order_visual = "Date"
elseif Request.QueryString("o") = "4" Then
order = "TypeID"
order_visual = "Category"
elseif Request.QueryString("o") = "5" Then
order = "Author"
order_visual = "Author"
end if
if Request.QueryString("h") = "" or Request.QueryString("h") = "ASC" Then
how = "ASC"
how_visual = "Ascanding"
else
how = "DESC"
how_visual = "Descanding"
end if
%>
Sen har jag haft problem med <!--#incude file="/Map/file.asp"-->
Servern klagar på att man inte får börja med /
Äldre eller nyare version av ASP? (../ i server.mappath accepteras inte heller)'
Skall du utgå ifrån roten när du ska inkludera en fil, så anger du med slash i början, ja. Däremot ska du använda include virtual, inte include file. Vad gäller server.mappath vet jag inte.
Angående din kod: Du får se till att korrläsa lite. Ska du använda variabeln iTutorials eller iTotorials?
Jag förstår inte heller din kodindentering, den gör det ganska svårt att hänga med i koden.
Hur som helst: Jag hade börjat med att byta ut detta kodstycke:
dim iTotorials
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=Microsoft.JET.OLEDB.4.0; Data Source=" & DB_Webben
Set RecSet = Server.CreateObject("ADODB.Recordset")
RecSet.Open "SELECT * FROM S_Tutorials", Conn, adOpenStatic, adLockOptimistic
if RecSet.EOF Then
iTutorials = 0
else
iTotorials = RecSet.RecordCount
end if
RecSet.Close : Set RecSet = Nothing
Conn.Close : Set Conn = Nothing
mot:
dim iTutorials
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=Microsoft.JET.OLEDB.4.0; Data Source=" & DB_Webben
Set RecSet = Conn.Execute ("SELECT count(*) FROM S_Tutorials")
iTutorials = RecSet(0)
RecSet.Close : Set RecSet = Nothing
Notera att jag inte stängt connectionobjektet, du ska ju använda det igen senare. Det finns ingen anledning till att skapa och förstöra hela tiden, utan använd klart objektet, sedan förstör du det. Du ska alltså ta bort koden som skapar och öppnar Conn längre ner i filen.
Skall du utgå ifrån roten när du ska inkludera en fil, så anger du med slash i början, ja. Däremot ska du använda include virtual, inte include file. Vad gäller server.mappath vet jag inte.
Angående din kod: Du får se till att korrläsa lite. Ska du använda variabeln iTutorials eller iTotorials?
Jag förstår inte heller din kodindentering, den gör det ganska svårt att hänga med i koden.
Hur som helst: Jag hade börjat med att byta ut detta kodstycke:
dim iTotorials
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=Microsoft.JET.OLEDB.4.0; Data Source=" & DB_Webben
Set RecSet = Server.CreateObject("ADODB.Recordset")
RecSet.Open "SELECT * FROM S_Tutorials", Conn, adOpenStatic, adLockOptimistic
if RecSet.EOF Then
iTutorials = 0
else
iTotorials = RecSet.RecordCount
end if
RecSet.Close : Set RecSet = Nothing
Conn.Close : Set Conn = Nothing
mot:
dim iTutorials
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=Microsoft.JET.OLEDB.4.0; Data Source=" & DB_Webben
Set RecSet = Conn.Execute ("SELECT count(*) FROM S_Tutorials")
iTutorials = RecSet(0)
RecSet.Close : Set RecSet = Nothing
Notera att jag inte stängt connectionobjektet, du ska ju använda det igen senare. Det finns ingen anledning till att skapa och förstöra hela tiden, utan använd klart objektet, sedan förstör du det. Du ska alltså ta bort koden som skapar och öppnar Conn längre ner i filen.
I övrigt heter det Ascending resp. Descending. ;)
Mvh
Jag använde variablen iTutorials för att räkna antalet guider i databasen!