Mostrar una serie de datos traídos de vuestro Access o SQL Server y mostrar unos enlaces del estilo de "20 Anteriores", "20 Siguientes" es una de las tareas más habituales con ASP. O al menos, una de las que más se pregunta cómo hacer.
Paginar a través de registros se hace utilizando únicamente propiedades del objeto Recordset. En concreto, utilizamos las siguientes:
PageSize: Define el nº de filas que forman una página. Para que aparezcan de 10 en 10, hay que ponerlo a 10.
CacheSize: Define el nº de filas que el Recordset va a pre-almacenar. Ponemos 10 también para no gastar memoria innecesaria. Si no pusiéramos nada, estaríamos trayendo (por ejemplo) 100 filas para sólo mostrar 10.
PageCount: Nos dice cuántas páginas tenemos en función del tamaño de cada página que hemos puesto arriba, con PageSize. Esto es, nos devuelve el nº de registros que devuelve la búsqueda divido por PageSize.
AbsolutePage: Dirige el Recordset a la página que especifiquemos. Esta es la propiedad que permite "navegar" por los registros, y la que tendremos que modificar para avanzar o retroceder.
NOTA:Aunque definamos el nº de registros por página, tenemos que controlar nosotros cuántos registros imprimimos. Si no llevamos una cuenta, imprimirá siempre hasta el final de la tabla.
La tabla que vamos a utilizar tiene la siguiente forma:
Campo Tipo
Id Autonumérico
Nombre Texto
Ventas Entero largo
Podría representar, por ejemplo, las ventas por empleado de una empresa con vocación comercial. (La verdad es que no había pensado en eso en absoluto, pero creo que debía daros una buena razón!)
¿Qué va a hacer nuestro script?
Lee de la Querystring la página para mostrar. Si no se especifica, como ocurre al cargar el script por primera vez, toma la página 1 como actual.
Creamos nuestros objetos de conexión, etc. y ponemos rs.AbsolutePage con el valor del apartado anterior.
Mostramos el recorset.
Imprimimos los enlaces "Anterior", "Siguiente", si procede. Si está en la primera página, no vamos a ponerle "Anterior", ¿no?
Sólo falta especificar que para el ejemplo uso una base de datos Access. Funciona exactamente igual con cualquier otra base de datos. Vamos a ver código!
<%
Dim oConn, rs, SQL
Dim PaginaActual ' en qué pagina estamos
Dim PaginasTotales ' cuántas páginas tenemos
Dim TamPagina ' cuantos registros por pagina
Dim CuantosRegistros ' la cuenta que os he mencionado
'MODIFICAR AQUI PARA CAMBIAR EL Nº DE REGISTRO POR PAGINA
TamPagina=10
'Leemos qué página mostrar. La primera vez será la inicial
if Request.Querystring("pagina")="" then
PaginaActual=1
else
PaginaActual=CInt(Request.Querystring("pagina"))
end if
Creamos los objetos y definimos las propiedades del Recordset.
set oConn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
' Conexión por OLEDB
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source="&Server.MapPath("ejemplo.mdb")&";"
SQL="SELECT Id, Nombre, Ventas FROM Ventas;"
Usuarios que han visto este tema también han visto...
- Interactuar con secuencias de comandos del cliente
- Redirección
- Paginar Datos en ASP
- Ejemplo básicos de uso de cookies en ASP
- Evitar la caché del navegador
Información legal | Política de Privacidad | Contacte con nosotros
Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.