Crear un RecordSet paginado
Para aligerar código he creado una función que me devuelve un recordset con el puntero posicionado en la página deseada:
Función:
Código ASP:
Ver original<%
'Parámetros:
'Sentencia: Sentencia SQL con la que generar el Recordset
'Pagina_Solicitada: Página del recordset solicitada para mostrar
'Mostrar: número de registros por página
'
'La función crea el Recordset solicitado y devuelve un array:
' Posición 0 : Páginas totales resultantes
' Posición 1 : Página en la que se posiciona, esta puede diferir de la
' solicitada, es decir, si se solicita la página 32 del recordset
' y sólo hay 28 páginas, el valor será 28.
'
Function CrearRs_paginado (Sentencia, Pagina_Solicitada, Mostrar)
Dim Devuelve(1)
if Pagina_Solicitada = "" then
Pagina_Solicitada = 1
Else
Pagina_Solicitada=cint(Pagina_Solicitada)
End if
if Mostrar = "" then
Mostrar = 5
Else
Mostrar = Cint(Mostrar)
End if
Set rs=server.createobject("adodb.recordset")
Rs.pagesize = Mostrar
Rs.cachesize = Mostrar
Rs.open Sentencia,conn,3,1
cant_paginas=rs.pagecount
If Pagina_Solicitada > cant_paginas then
Pagina_Solicitada = cant_paginas
end if
if Pagina_Solicitada <1 then
Pagina_Solicitada = 1
end if
If cant_paginas = 0 Then
'Cantidad de páginas
Devuelve(0) = 0
'Página Solicitada
Devuelve(1) = 0
CrearRs_paginado = Devuelve
Else
Rs.absolutepage = Pagina_Solicitada
Devuelve(0) = rs.pagecount
Devuelve(1) = Pagina_Solicitada
CrearRs_paginado = Devuelve
End If
End Function
%>
Desde el documento actuamos así:
Código HTML:
Ver original
<%
Pags_NumPag = CrearRs_Paginado("Select * From Boletines_Subcr", 523, 10)
For I=1 To 10
If Rs.Eof Then Exit For
%>
<%
Rs.MoveNext
Next
Response.Write "Página " & Pags_NumPag(1) & " de " & Pags_NumPag(0)
CerrarRs
%>
<a href="borrar.asp?cod=&page=<%=Pags_NumPag(1)-1%>"> Anterior
</a> |
<a href="borrar.asp?cod=&page=<%=Pags_NumPag(1)+1%>"> Siguiente
</a>
He preferido hacerlo así para que el diseño de muestra de el recordset sea propio de cada página.