Jag använder GetRows() för att optimera koden lite bättre. I koden här nedan använder jag GetRows() tillsammans med Du kan ju testa: Det fungerar inte! Jag får 800a03ea-fel (för HTML-parsing?). Det närmsta jag kom var att Select Case-satsen inte hade någon End Select så den tog jag bort. Jag gjorde om lite i koden, helst använder jag inte Const Pagesize då jag har en likadan paging högre upp i koden. Felmeddelandet är:GetRows med Paging
paging och det fungerar till viss del. Jag ska ha 10 poster per sida, och låt oss säga att databasen innehåller
30 sidor. På första sidan visas alla poster, på andra sidan nästa 10 poster och på tredje nästa 10 poster, precis som det ska vara.
Men hur fixar jag så att bara 10 poster syns på första sidan och inte alla i databasen?
Efter For-loopen står ju också and sftRowcount < Psize. Om jag tar bort den raden fungerar allt ändå, med enda undantaget att
alla poster syns på den första sidan. Jag får inget felmeddelande.
Och slutligen, går det att optimera koden mer?
<code><% 'Detta kodstycket är en fortsättning på listningen av alla poster i en specifik tråd
Dim sftCn, sftRs, sftstrSQL, viewPage, sftRowCount, sftPageCounter, Psize, arrRecs, ifo, f0, f1, f2, f3, f4, f5, f6, f7
viewPage = Request.Querystring("viewPage")
If viewPage="" Then viewPage=1
sftRowcount=0
Set sftCn = Server.CreateObject("ADODB.Connection")
sftCn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("forum/db_forum.mdb") & ";pwd=" & Password & ";"
sftstrSQL = "Select * From tbl_answers Where TopicId=" & Request.Querystring("id")
Set sftRs = sftCn.Execute("Select * From tbl_answers Where TopicId=" & Request.Querystring("id"))
sftRs.Close
sftRs.Cursortype=3
Psize=10
sftRs.Open %>
<% If sftRs.EOF And Forum_NoId="No" Then Response.Write ""
If sftRs.EOF And Not Forum_NoId="No" Then Response.Write "Inga svar än.. Skriv svar nedan." Else sftRs.Absolutepage=cInt(viewPage) %>
<% If Not sftRs.EOF Then : arrRecs = sftRs.GetRows
Dim sftAntal, sftPageCount : sftAntal = sftRs.Recordcount
sftPageCount = sftRs.PageCount
sftRs.Close : Set sftRs = Nothing
sftCn.Close : Set sftCn = Nothing %>
<% If IsArray(arrRecs) Then
For ifo = 0 To UBound(arrRecs,2) and sftRowcount < Psize
f0 = arrRecs(0,ifo)
f1= arrRecs(1,ifo)
f2= arrRecs(2,ifo)
f3= arrRecs(3,ifo)
f4= arrRecs(4,ifo)
f5 = arrRecs(5,ifo)
f6 = arrRecs(6,ifo)
f7 = arrRecs(7,ifo) %>
<a name="#<%=f0%>"></a><table><tr bgcolor="<%=Border%>"><td width="528">
<table cellpadding="6" cellspacing="0" border="0"><tr><td bgcolor="<%=stCell%>"><table cellpadding="0" cellspacing="0" border="0"><tr><td width="460"><span class="minirubrik"><%=f5%></span></td><td>Redigera</td></tr></td></tr></table>
</td></tr><tr><td bgcolor="<%=stCell2%>"><%=fixmylinks(Replace(f6,vbCrLf,"<br>"))%>
<p><% If Len(f3)>0 Then %><% End If %><%=f2%><% If Len(f3)>0 Then %><% End If %>
| <%=Left(f7,16)%> | <span class="minirubrik">Id:</span> <%=f0%></td></tr></table></td></tr></table><p>
<% sftRowcount = sftRowcount + 1
Next
End If
End If %>
<% If sftAntal > 10 Then %>
<% For sftPagecounter = 1 to sftPageCount %>
&viewpage=<%=sftPagecounter%>"><%=sftPagecounter%>
<% Next %><% If Len(Request.Querystring("viewpage"))>0 Then %> | Du är på sida <span class="minitext"><%=Request.Querystring("viewpage")%></span><% End If %>
<% End If %></code>Sv: GetRows med Paging
<code>
<%
'Detta kodstycket är en fortsättning på listningen av alla poster i en specifik tråd
Dim sftCn
Dim sftRs
Dim viewPage
Dim sftRowCount
Dim sftPageCounter
Dim arrRecs
Dim ifo, f0, f1, f2, f3, f4, f5, f6, f7
Dim sftAntal
Dim PageCount
Const PageSize=10
Const adUseClient = 3
viewPage = Request.Querystring("viewPage")
If viewPage="" Then viewPage=1
Set sftCn = Server.CreateObject("ADODB.Connection")
sftCn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("forum/db_forum.mdb") & ";Persist Security Info=False"
Set sftRs = Server.CreateObject("ADODB.Recordset")
sftRs.CursorLocation = adUseClient
sftRs.Open "SELECT * FROM tbl_answers WHERE TopicId=" & Request.Querystring("id"), sftCn
If sftRs.EOF Then
sftRs.Close
Set sftRs = Nothing
sftCn.Close
Set sftCn = Nothing
If Forum_NoId <> "No" Then
Response.Write "Inga svar än.. Skriv svar nedan."
End If
Else
PageCount = (sftRs.Recordcount \ PageSize) + 1
Select Case viewPage
arrRecs = sftRs.GetRows(PageSize, PageSize * viewPage)
sftRs.Close
Set sftRs = Nothing
sftCn.Close
Set sftCn = Nothing
For ifo = 0 To UBound(arrRecs,2) and sftRowcount < Psize
f0 = arrRecs(0,ifo)
f1= arrRecs(1,ifo)
f2= arrRecs(2,ifo)
f3= arrRecs(3,ifo)
f4= arrRecs(4,ifo)
f5 = arrRecs(5,ifo)
f6 = arrRecs(6,ifo)
f7 = arrRecs(7,ifo)
%>
<a name="#<%=f0%>"></a><table><tr bgcolor="<%=Border%>"><td width="528">
<table cellpadding="6" cellspacing="0" border="0"><tr><td bgcolor="<%=stCell%>"><table cellpadding="0" cellspacing="0" border="0"><tr><td width="460"><span class="minirubrik"><%=f5%></span></td><td>Redigera</td></tr></td></tr></table>
</td></tr><tr><td bgcolor="<%=stCell2%>"><%=fixmylinks(Replace(f6,vbCrLf,"<br>"))%>
<p><% If Len(f3)>0 Then %><% End If %><%=f2%><% If Len(f3)>0 Then %><% End If %>
| <%=Left(f7,16)%> | <span class="minirubrik">Id:</span> <%=f0%></td></tr></table></td></tr></table><p>
<%
sftRowcount = sftRowcount + 1
Next
End If
If sftPageCount > 1 Then
For sftPagecounter = 1 to sftPageCount
%>&viewpage=<%=sftPagecounter%>"><%=sftPagecounter%><%
Next
%> | Du är på sida <span class="minitext"><%=viewPage%></span><%
End If
%>
</code>Sv: GetRows med Paging
ADODB.Recordset fel '800a0bb9'
Programmet använder felaktiga parametrar, som antingen ligger utanför tillåtet intervall, eller som skapar en inbördes konflikt.
och felet är vid arrRecs = sftRs.GetRows(PSize, PSize * viewPage)
Koden som den är nu:
<code>
<%
'Detta kodstycket är en fortsättning på listningen av alla poster i en specifik tråd
Dim sftCn
Dim sftRs
Dim viewPage
Dim sftRowCount
Dim sftPageCounter
Dim arrRecs
Dim ifo, f0, f1, f2, f3, f4, f5, f6, f7
Dim sftAntal
Dim PageCount
Const PSize=10
Const adUseClient = 3
viewPage = Request.Querystring("viewPage")
If viewPage="" Then viewPage=1
Set sftCn = Server.CreateObject("ADODB.Connection")
sftCn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("forum/db_forum.mdb") & ";pwd=" & Password & ";"
Set sftRs = Server.CreateObject("ADODB.Recordset")
sftRs.CursorLocation = adUseClient
sftRs.Open "SELECT * FROM tbl_answers WHERE TopicId=" & Request.Querystring("id"), sftCn
If sftRs.EOF Then
sftRs.Close
Set sftRs = Nothing
sftCn.Close
Set sftCn = Nothing
If Forum_NoId <> "No" Then
Response.Write "Inga svar än.. Skriv svar nedan."
End If
Else
PageCount = (sftRs.Recordcount \ PSize) + 1
arrRecs = sftRs.GetRows(PSize, PSize * viewPage)
sftRs.Close
Set sftRs = Nothing
sftCn.Close
Set sftCn = Nothing
For ifo = 0 To UBound(arrRecs,2) and sftRowcount < Psize
f0 = arrRecs(0,ifo)
f1= arrRecs(1,ifo)
f2= arrRecs(2,ifo)
f3= arrRecs(3,ifo)
f4= arrRecs(4,ifo)
f5 = arrRecs(5,ifo)
f6 = arrRecs(6,ifo)
f7 = arrRecs(7,ifo)
%>
<a name="#<%=f0%>"></a><table><tr bgcolor="<%=Border%>"><td width="528">
<table cellpadding="6" cellspacing="0" border="0"><tr><td bgcolor="<%=stCell%>"><table cellpadding="0" cellspacing="0" border="0"><tr><td width="460"><span class="minirubrik"><%=f5%></span></td><td>Redigera</td></tr></td></tr></table>
</td></tr><tr><td bgcolor="<%=stCell2%>"><%=fixmylinks(Replace(f6,vbCrLf,"<br>"))%>
<p><% If Len(f3)>0 Then %><% End If %><%=f2%><% If Len(f3)>0 Then %><% End If %>
| <%=Left(f7,16)%> | <span class="minirubrik">Id:</span> <%=f0%></td></tr></table></td></tr></table><p>
<% sftRowcount = sftRowcount + 1
Next
End If
End If
If sftPageCount > 1 Then
For sftPagecounter = 1 to sftPageCount
%>&viewpage=<%=sftPagecounter%>"><%=sftPagecounter%>
<% Next %> | Du är på sida <span class="minitext"><%=viewPage%></span>
<% End If %></code>