Hola de nuevo, estoy intentando crear una función para paginar Recordset, este es el código:
Código HTML:
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
CrearRs_paginado = 0
'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
%>
<html xmlns="http://www.w3.org/1999/xhtml">
<link href="Estilo.css" rel="stylesheet" type="text/css" />
<%
Dim Pags_NumPag(1)
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 Pags_NumPag(0) &"<br/>"
Response.Write Pags_NumPag(1)
CerrarRs
%>
A la función se le pasa la consulta, la página en la que te quieres posicionar y los registros a mostrar por página.
Me tiene que devolver dos valores para poder crear el pie de paginación que son las páginas totales
y en número de página en el que se posiciona.
Y por esto último es por lo que necesito el array, porque le puedo pedir la página 100, pero si sólo hay 95 debe devolver 95
De esta manera aunque yo le dé a siguiente repetidamente, el pie quedará así:
Página 25 de 25 | Anterior Siguiente
De momento tan sólo me muestra los resultados. O lo intento, porque me da este error:
Microsoft VBScript runtime error '800a0009'
Subscript out of range
/prueba.asp, line 102
Esta es la línea 102:
Código ASP:
Ver originalPags_NumPag() = CrearRs_Paginado("Select * From Boletines_Subcr", 523, 10)