paginacion con classes, correccion del viejo  
   
create un class.asp: 
 
 
<% 
Class paginado 
	Public pagina
	Public cnn
	Public error
	Public por_pagina
	Public total_registros
	Public consulta
	Public orden_lista
	Public rs
	Public desde
	Public encabezado
	Public ancho_encabezado
	Public alineacion
	Public ancho 
	Function paginar() 
		If IsEmpty(Me.cnn) then
			paginar = False
			Err.Description = "No Conection with the Database"
			Exit Function
		End if 
		If isEmpty(Me.consulta) then 
			paginar = False
			Err.Description = "No se especificó la consulta sobre la Base de Datos"
			Exit Function
		End if 
		'VALORES POR DEFECTO
		Me.pagina = Request.ServerVariables("URL") 
		If isEmpty(Me.por_pagina) then 
			Me.por_pagina = 50
		End if 
		If isEmpty(Me.desde) then 
			Me.desde = 0
		End if 
		If isEmpty(Me.alineacion) then 
			Me.alineacion = "center"
		End if 
		If isEmpty(Me.ancho) then 
			Me.ancho = "100%"
		End if
		'FIN DE VALORES POR DEFECTO 
		set Me.rs = Server.CreateObject("ADODB.Recordset")
		Me.rs.Open Me.consulta,Me.cnn,3,1
		Me.total_registros = Me.rs.RecordCount
		ban_error = 0
		If Me.total_registros > 0 then
			Me.rs.Move Me.desde
			inicio = Me.rs.Bookmark
			table = Me.rs.GetRows(Me.por_pagina,inicio)
		else
			ban_error = 1
		end if
		Me.rs.Close()
		set Me.rs = Nothing 
		If ban_error <> 1 then
			encabezado = split(Me.encabezado,",")
			ancho_enc = split(Me.ancho_encabezado,",")
			orden_lista = split(Me.orden_lista,",")%> 
<table border=0 align="<%=Me.alineacion%>" width="<%=Me.ancho%>">
			<tr>
			<%For k=0 to Ubound(encabezado)%>
			  <td bgcolor="#FFFFCC" width="<%=ancho_enc(k)%>" align="center">
			   <font size='1' face='verdana'><b><a href="<%=Me.pagina%>?orden=<%=orden_lista(k)%>"><%  =encabezado(k)%></a></font></b>
			  </td>
			<%Next%>
			</tr>
			</table>
			<table border=0 align="<%=Me.alineacion%>" width="<%=Me.ancho%>">
			<%For i=0 to Ubound(table,2)
				Response.Write("<tr>")
				For j=0 to Ubound(table,1)
					Response.Write "<td width=" & ancho_enc(j) &"><font size='1' face='verdana'>"
					if j=0 then
					response.write "<a href='customers.asp?id="&table(0,i)&"'>"
					end if
					if j=3 then
					response.write "<a href='mailto:"&table(3,i)&"'>"
					end if
					response.write table(j,i) & "</a></font></td>"
				Next
				Response.Write("</tr>")
			Next
			Response.Write("</table>") 
			If Ubound(table,2)+1 < Me.total_registros then
				'En caso afirmativo calculamos el nº de páginas que tenemos
				'y luego mostramos los links a las demás páginas
				If (Me.total_registros mod Me.por_pagina) = 0 then
					nro_paginas = Int(Me.total_registros / Me.por_pagina)
				else
					nro_paginas = Int(Me.total_registros / Me.por_pagina) + 1
				end if%> 
<table border=0 width="<%=Me.ancho%>" align="<%=Me.alineacion%>" cellspacing=0>
  <tr> 
    <td bgcolor="#EEEEEE" > <strong><font size="1" face="Verdana, Arial, Helvetica, sans-serif"> 
      <%'Acá mostramos los links de la forma: Página 1 | 2 | 3 | 4 ...%>
      Page 
      <%For i=0 to nro_paginas-1%>
      <%If Me.desde = i*Me.por_pagina then%>
      <font title="Page"><%=i+1%></font></font> <font size="1" face="Verdana, Arial, Helvetica, sans-serif"> 
      <%else%>
      <a href="<%=Me.pagina%>?orden=<%=session("orden_lista  ")%>&ref=<%=i*Me.por_pagina%>" class="e" title="go to page <%=i+1%>"><%=i+1%></a> 
      <%end if%>
      <%If i < nro_paginas-1 then
					Response.Write(" | ")
					end if
				  Next%>
      </font></strong></td>
    <td bgcolor="#EEEEEE"> <strong><font size="2" face="Arial, Helvetica, sans-serif"> 
      <%
					a = Me.desde + Me.por_pagina
					b = Me.desde - Me.por_pagina
					if (Me.desde = 0) and (Ubound(table,2)+1 < Me.total_registros) then%>
      <a href="<%=Me.pagina%>?orden=<%=session("orden_lista  ")%>&ref=<%=a%>" title="See <%=Me.por_pagina%> Next" class="e">Next 
      >></a> 
      <%end if
					if (Me.desde+Me.por_pagina < Me.total_registros) and (Me.desde <> 0) then%>
      <a href="<%=Me.pagina%>?orden=<%=session("orden_lista  ")%>&ref=<%=b%>" title="See <%=Me.por_pagina%> Back" class="e"><< 
      Back</a> | <a href="<%=Me.pagina%>?ref=<%=a%>" title="See <%=Me.por_pagina%> Next" class="e">Next 
      >></a> 
      <%elseif (Me.desde <> 0) then%>
      <a href="<%=Me.pagina%>?orden=<%=session("orden_lista  ")%>&ref=<%=b%>" title="See <%=Me.por_pagina%> Back" class="e"><< 
      Back</a> 
      <%end if%>
      </font></strong></td>
  </tr>
</table>
			<%end if
		End if 
	End Function 
End Class%>   
luego donde vas a paginar:  
 
  
<%
orden=request.querystring("orden")
if orden="" or orden=null then
	orden="regdate"
end if
session("orden_lista")=orden 
strConnection = "DSN=xxxxx;UID=xxxxx;PWD=xxxxx"
Set cnn = Server.CreateObject("ADODB.Connection")
cnn.Open strConnection
set rs = new paginado 
rs.cnn = cnn								'* Conexión a la base de datos
if custo<>"" then
	rs.consulta = "SELECT custid, fname,lname, email, country, referencias,regdate FROM customers where fname like '%"&custo&"%' or lname like '%"&custo&"%' or email like '%"&custo&"%'" 
else
	rs.consulta = "SELECT custid, fname,lname, email, country, referencias,regdate FROM customers order by "&orden&" desc"
end if
rs.desde = Int(Request.Querystring("ref"))	'* Registro desde donde comienza el paginado, dejar como está
rs.por_pagina = 50							'Cantidad de Registros por página (10 por defecto)
rs.encabezado = "Id,Name,Lastname,Email,Country,Reference,Registed  "		'*Texto de cada Columna de datos
rs.orden_lista = "custid,fname,lname,email,country,referencias,regd  ate"
rs.ancho_encabezado = "3%,5%,5%,15%,10%,15%,15%"			'*Ancho de cada Columna de datos (pixeles o porcentaje)
rs.alineacion = "center"					'Alineación de la tabla que muestra los datos ("center" por defecto)
rs.ancho = "90%"							'Ancho de la tabla que muestra los datos (100% por defecto)
rs.paginar()								'* Método que realiza la paginación y genera la tabla 
If Err.Description <> "" then%>
	<center>
	<font class=texto_error><b>Error</b>: <%=Err.Description%></font>
	</center>
	<br>
<%end if 
set rs = Nothing
%>