webForumDet fria alternativet

GetRows() med paging

ASP

2 svar · 238 visningar · startad av m_soderlund

Medlem sedan sep. 20026 425 inlägg
Frågan#1

Jag använder GetRows() för att optimera koden lite bättre. I koden här nedan använder jag GetRows() tillsammans med
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?

<% '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><a href="default.asp?cat=forum&action=edit&aid=<%=f0%>">Redigera</a></td></tr></td></tr></table> 
</td></tr><tr><td bgcolor="<%=stCell2%>"><%=fixmylinks(Replace(f6,vbCrLf,"<br>"))%> 
<p><% If Len(f3)>0 Then %><a href="mailto:<%=f3%>" title="<%=f3%>"><% End If %><%=f2%><% If Len(f3)>0 Then %></a><% 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 %> 
<a href="default.asp?cat=forum&action=show&id=<%=Request.Querystring("id")%>&viewpage=<%=sftPagecounter%>"><%=sftPagecounter%></a> 
<% Next %><% If Len(Request.Querystring("viewpage"))>0 Then %> | Du är på sida <span class="minitext"><%=Request.Querystring("viewpage")%></span><% End If %> 
<% End If %>
Medlem sedan apr. 2001425 inlägg
#2

Kolla in Paces klass...

clsPacePager - Förenklar paging via matris (array) och For...Next loopar.

Medlem sedan sep. 20026 425 inlägg
#3

Tack.. Kollar upp den lite.

343 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
214 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)