codice:
<%@LANGUAGE = VBScript%>

<%
' DEFINISCO LE VARIABILI CHE MI SERVONO PER L'APPLICAZIONE
Dim cn, rs, quanti, pag, contatore

' Creo un'istanza per la connessione ed una per il Recordset
Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")

' APRO LA CONNESSIONE COL DATABASE
cn.Open str_cn

' DEFINISCO IL NUMERO DI RECORD DA VISUALIZZARE PER OGNI PAGINA
RecordsXPagina = 6   

' RECUPERO IL NUMERO DI PAGINA CORRENTE
' E CONTROLLO CHE NON SIA INFERIORE A 1

If Request.QueryString("pagina") = "" Then
  pagina = 1
Else
  pagina = CInt(Request.QueryString("pagina"))
End If   

' IMPOSTO UN CONTATORE
contatore = 0
%>
<html>
<head>
<title>Paginazione dei risultati di query molto lunghe in ASP</title>
<style>a { color: blue; }</style>
</head>
<body>

<table align="center" width="300" border="1">
<%
Dim SQL ' Creo la query SQL
SQL = "SELECT * FROM dati"

' EFFETTUO MATERIALMENTE LA PAGINAZIONE
rs.Open sql, cn, 3,3

'PRIMO CICLO DI CONTROLLO ESISTENZA RS
if not RS.eof then   

RS.PageSize = RecordsXPagina
RS.AbsolutePage = pagina   



'CICLO PER PAGINAZIONE
For i = 1 to RecordsXPagina

'SECONDO CICLO DI CONTROLLO ESISTENZA RS
'PER EVITARE CHE SE ALL'ULTIMA PAGINA HA RECORDS MINORI DI RECORDSXPAGINA
'VADA IN ERRORE
if not RS.eof then   
%>
<tr><td><%=rs("nome")%> </td></tr>
<%

RS.movenext
' INCREMENTO IL VALORE DEL CONTATORE
contatore = contatore + 1
end if
next   


'PAGINAZIONE VERA E PROPRIA
Response.Write "
Numero Pagine: "
  For pagina = 1 to RS.PageCount
  Response.Write "<A href='"&istring&"?pagina=" & pagina
  Response.write "'>"
  Response.write "<font size=1 color=#000080>"
  Response.Write pagina
  Response.Write "</A> " 
Next
Response.Write ">>

</td></tr>"	

'CHIUSURA E DISTRUZIONE RECORDSET
rs.Close
Set rs = Nothing

'CHIUSURA E DISTRUZIONE CONNESSIONE AL DB
Cn.Close
Set Cn = Nothing
end if   

%>
</table>