Ciao, bentornata :)
Sembra che venga eseguita una query diversa, più complessa, quando visiti le pagine successive alla prima. Questo spiega perché la prima pagina si carica velocemente mentre le altre no.
Il problema "inizia" all'altezza di questa linea che discrimina le pagine successive alla prima.
Guardando il codice che viene di seguito penso che possa essere semplificato per darti una paginazione più veloce, tuttavia è un po' intricato e potrei fare qualche errore. Comunque proviamo, ma fai una copia di backup del tuo file prima.
Lo scopo è sfruttare le proprietà .PageSize e .AbsolutePage del recordset, pensate proprio per ottenere una paginazione dei risultati.
Qui trovi un articolo di Daniele Bochicchio che ne parla:
http://www.aspitalia.com/script/208/Utilizzare-Paginazione-Motori-Ricerca.aspxArrivando al dunque... dovresti sostituire questo pezzo:
If esclusi <> 0 Then
sql="SELECT TOP " & ARTPP & " post.id, post.ora, utenti.id AS uid, utenti.nick, utenti.foto, " &_
"utenti.livello AS livello, COUNT(postcopy.post) AS totposts " &_
"FROM (post AS postcopy INNER JOIN (post INNER JOIN utenti ON post.ida=utenti.id) ON postcopy.ida=utenti.id) " &_
"WHERE post.idt=" & Request.QueryString("id") & " AND post.id NOT IN " &_
"(SELECT TOP " & esclusi & " post.id " &_
"FROM (post AS postcopy INNER JOIN (post INNER JOIN utenti ON post.ida=utenti.id) ON postcopy.ida=utenti.id) " &_
"WHERE post.idt=" & Request.QueryString("id") & " " &_
"GROUP BY post.id, post.ora, utenti.id, utenti.nick, utenti.foto, utenti.livello, postcopy.ida " &_
"ORDER BY post.ora) " &_
"GROUP BY post.id, post.ora, utenti.id, utenti.nick, utenti.foto, utenti.livello, postcopy.ida " &_
"ORDER BY post.ora;"
Else
sql="SELECT TOP " & ARTPP & " post.id, post.ora, utenti.id AS uid, utenti.nick, utenti.foto, " &_
"utenti.livello AS livello, COUNT(postcopy.post) AS totposts " &_
"FROM (post AS postcopy INNER JOIN (post INNER JOIN utenti ON post.ida=utenti.id) ON postcopy.ida=utenti.id) " &_
"WHERE post.idt=" & Request.QueryString("id") & " " &_
"GROUP BY post.id, post.ora, utenti.id, utenti.nick, utenti.foto, utenti.livello, postcopy.ida " &_
"ORDER BY post.ora;"
End If
rs.Open sql,conn,3,3
If (rs.RecordCount<>0) Then
rs.MoveFirst
Con questo pezzo:
sql="SELECT TOP " & topc & " post.id, post.ora, utenti.id AS uid, utenti.nick, utenti.foto, " &_
"utenti.livello AS livello, COUNT(postcopy.post) AS totposts " &_
"FROM (post AS postcopy INNER JOIN (post INNER JOIN utenti ON post.ida=utenti.id) ON postcopy.ida=utenti.id) " &_
"WHERE post.idt=" & Request.QueryString("id") & " " &_
"GROUP BY post.id, post.ora, utenti.id, utenti.nick, utenti.foto, utenti.livello, postcopy.ida " &_
"ORDER BY post.ora;"
rs.Open sql,conn,3,3
rs.PageSize = ARTPP
rs.AbsolutePage = pag
If (rs.RecordCount>esclusi) Then
'rs.MoveFirst <-- questa puoi eliminarla
ciao