Foros del Web » Programando para Internet » ASP Clásico »

Paginar en ASP

Estas en el tema de Paginar en ASP en el foro de ASP Clásico en Foros del Web. ¿Alguien puede ayudarme sobre como paginar un bloque de registros en ASP? ¿No existe un GRID verdad? Que pueda ir RECARGANDO sobre los botones de ...
  #1 (permalink)  
Antiguo 11/03/2004, 04:49
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 21 años, 2 meses
Puntos: 0
Pregunta Paginar en ASP

¿Alguien puede ayudarme sobre como paginar un bloque de registros en ASP?

¿No existe un GRID verdad? Que pueda ir RECARGANDO sobre los botones de ADELANTE/ATRAS!!

No sé como recargar los datos de la SELECT sin volver a realizarla.
Es una select con muchísimos registros, y desearía realizarla UNA SOLA VEZ e ir recargando un grid desde un CURSOR ¿?

Ahora funciona pero usando: rs.pagesize, rs.absolutepage ...

Me han hablado de FETCH o GETDATA para SQL pero no encuentro información conjunta con ASP!

Muchas gracias, espero vuestros comentarios.
  #2 (permalink)  
Antiguo 11/03/2004, 05:51
 
Fecha de Ingreso: enero-2004
Mensajes: 154
Antigüedad: 21 años, 3 meses
Puntos: 0
Lo del rs.pagesize, rs.absolutepage funciona bastante bien, solo tienes que ir dando valor a rs.absolutepage para ir de una página a otra del resultado.
Si hay muchos datos es mejor paginar desde SQL pero al paginar devuelves un conjunto de resultado , por lo que para ir de una página a otra necesitas llamar de nuevo al asp.

Si detallas un poco más lo que quieres te informo.

Saludos!!!
  #3 (permalink)  
Antiguo 11/03/2004, 06:04
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 21 años, 2 meses
Puntos: 0
detallo...

Hola gracias por tu interés:
Lo que necesito es realizar una única select (PUEDE LLEGAR A SER ENORME) y mostrarle al cliente los 50 primeros registros... al pulsar SIGUIENTE pues del 51 al 100 y sucesivamente (ATRAS/SIGUIENTE) ...

Y ahora mismo tengo paginados los resultados PERO cada vez realizo la SELECT y luego uso el rs.pagesize y rs.absolutepage ...

Me han hablado de FETCH... pero no sé cómo aplicarlo a mi página ASP !!

Espero puedas ayudarme
Gracias

j@n
  #4 (permalink)  
Antiguo 11/03/2004, 06:17
 
Fecha de Ingreso: enero-2004
Mensajes: 154
Antigüedad: 21 años, 3 meses
Puntos: 0
Para empezar, FETCH no tiene nada que ver con paginación.

Por otro lado, si lo que quieres es mejorar en la velocidad lo mejor es realizar la paginación en BD, devolviendo sólo los registros que se van a ver, por lo que el ASP se va a recargar cada vez que pulses ANTERIOR/SIGUIENTE.
De todas formas si la consulta devuelve siempre 50 registros puede ser muy rápida.

Te doy un ejemplo sencillo y ya me dices si te vale.
En una tabla de 100.000 registros tengo una clave primaria id que va de 1 a 100.000
En el asp tengo el numero de página (pagina) y los datos que puedo mostar (maxdatos),
pues me lo monto asi:
pagina=1
maxpagina=50
select * from TABLA where id>=(pagina-1)*maxpagina+1 and id<=(pagina)*maxpagina
esta consulta es muy rápida y así obtengo los registros del 1 al 50.
Si pulso siguiente
obtendré los registros del 51 al 100

Voy bien????

Saludos!!!!
  #5 (permalink)  
Antiguo 11/03/2004, 06:31
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 21 años, 2 meses
Puntos: 0
Claaaaaaaaaro

Ya lo he pillado... voy a hacer los cambios haber si funciona... Muchas gracias!!

  #6 (permalink)  
Antiguo 11/03/2004, 06:34
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 21 años, 2 meses
Puntos: 0
Desacuerdo uppppsssss

Pero... yo no tengo ese ID !!
De hecho la SELECT se puede filtrar por VARIOS CAMPOS!!
Y ordenar ASCendente y DESCendentemente por cualquier campo!!

Así que... no sirve lo que me comentas, no¿?

  #7 (permalink)  
Antiguo 16/03/2004, 04:48
 
Fecha de Ingreso: enero-2004
Mensajes: 154
Antigüedad: 21 años, 3 meses
Puntos: 0
Ahí va un truco de experto:
SELECT TOP {RegistrosPorPagina} * FROM
(SELECT TOP {Universo} * FROM {Tabla} WHERE {Criterio}) ALIASA
WHERE ALIASA.{CampoID} NOT IN
(SELECT TOP ( {RegistrosPorPagina} * (1 - {PaginaActual} ) ) {CampoID}
FROM ( SELECT TOP {Universo} * FROM {Tabla} WHERE {Criterio}) ALIASB
ORDER BY ALIASB.{OrdeNadoPor} )
ORDER BY ALIASA.{OrdenadoPor}

Esto funciona en SQL Server, pero para otros gestores se puede aplicar la misma idea. Estudialo porque es algo complejo y si tienes dudas ya sabes, lo comentas.
  #8 (permalink)  
Antiguo 16/03/2004, 04:50
 
Fecha de Ingreso: enero-2004
Mensajes: 154
Antigüedad: 21 años, 3 meses
Puntos: 0
{CampoID} es el campo que en tu tabla hace de clave primaria, con este codigo da igual el tipo de dato que sea y que valores tenga.
Si tu tabla tiene una clave primaria formada por más de una columna hay otras soluciones, pero ya es más complicado.

TODO ES POSIBLE!!!!
Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:48.