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

Duda Existencial - Paginación

Estas en el tema de Duda Existencial - Paginación en el foro de ASP Clásico en Foros del Web. La duda que tengo radica en cuan óptimo es realizar la páginación utilizando el Método Getrows (tomando por ej 10 registros por vez) cuando en ...
  #1 (permalink)  
Antiguo 22/07/2002, 14:57
 
Fecha de Ingreso: enero-2002
Ubicación: Yerba Buena - Tucumán
Mensajes: 259
Antigüedad: 22 años, 5 meses
Puntos: 0
Duda Existencial - Paginación

La duda que tengo radica en cuan óptimo es realizar la páginación utilizando el Método Getrows (tomando por ej 10 registros por vez) cuando en realidad la sentencia SQL trae todos los registros de la Base de Datos (por ej SQL="SELECT * FROM tabla")
En sí, lo que quiero saber es si existe alguna forma para ir páginando con la misma sentencia en SQL y no ir pasando 10 registros del total a la matriz que obtenemos con el método Getrows.
Para explicarme mejor les muestro el código:

Código:
<%'p es la posicion de comienzo en los registros
If Request.Querystring("ref") = "" then
p = 0 'Empezamos desde el 1º registro
else
p = int(Request.Querystring("ref"))
end if

SQL = "SELECT * FROM tabla ORDER BY fecha"
'abrimos el recordset con tipo de cursor 3 para poder utilizar bookmarks y saber el nº total de registros
rs.Open SQL, cnn, 3, 1
total_registros = rs.RecordCount
banerror = 0
If total_registros > 0 then
   rs.Move p
   inicio = rs.Bookmark
   mitabla = rs.GetRows(10,inicio)
else
   banerror = 1
end if
rs.Close
set rs = Nothing
cnn.Close
set cnn = Nothing
Con las tres sentencias:

rs.Move p
inicio = rs.Bookmark
mitabla = rs.GetRows(10,inicio)

lo que hacemos es movernos al registro desde el cual vamos a tomar los 10 siguientes. Después ponemos una marca (que sería en el registro de posición p ) y por último utilizamos Getrows para guardar en la matriz mitabla SOLO 10 registros a partir de la posición p.
Hasta aquí la ventaja de hacer la páginación de este modo es que no tenemos que llevar TODOS los registros de la tabla a la matriz, con lo que ahorramos mucha memoria. Pero a lo que voy, es cuanta memoria nos ahorramos si en realidad al abrir el Recordset traemos TODOS los registros y no solo 10 que son los que en realidad vamos a mostrar.
Lo que quiero que me digan es si este código puede optimizarse aún mas o no. Y en el caso que si pueda hacerse ... Como ?

Desde ya muchas gracias.

CABEZOTA ;)

<center><font face=Verdana size=2>Webmaster de [/CODE]<A href="http://www.salirxtucuman.com.ar" target="_blank"><img src="http://www.efrance.fr/salirxtucuman/images/titulo.gif" border=0 align="absmiddle"></a></center>
  #2 (permalink)  
Antiguo 22/07/2002, 17:31
 
Fecha de Ingreso: enero-2002
Ubicación: Yerba Buena - Tucumán
Mensajes: 259
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: Duda Existencial - Paginación

No hay forma de optimizarlo ??? O no está claro el mensaje ???
Cualquier cosa que no esté clara diganme para qie intente aclararla.
Saludos

<center><font face=Verdana size=2>Webmaster de [/CODE]<A href="http://www.salirxtucuman.com.ar" target="_blank"><img src="http://www.efrance.fr/salirxtucuman/images/titulo.gif" border=0 align="absmiddle"></a></center>
  #3 (permalink)  
Antiguo 23/07/2002, 01:39
 
Fecha de Ingreso: abril-2002
Ubicación: La Comarca
Mensajes: 192
Antigüedad: 22 años, 2 meses
Puntos: 0
Re: Duda Existencial - Paginación

En la sentencia :

SQL = &quot;SELECT * FROM tabla ORDER BY fecha&quot;

Puedes poner :
primera = &quot;la que quieres que se vea en este caso como primera&quot;.

SQL = &quot;SELECT * FROM tabla ORDER BY fecha LIMIT primera,10&quot;

Asi, por ejemplo, si paginas de 10 en 10, la sentencia deberia ir cambiando de la siguiente manera :

SQL = &quot;SELECT * FROM tabla ORDER BY fecha LIMIT 0,10&quot;
SQL = &quot;SELECT * FROM tabla ORDER BY fecha LIMIT 10,10&quot;
etc.

Espero eso te sirva.
Ideafix.
  #4 (permalink)  
Antiguo 23/07/2002, 14:53
 
Fecha de Ingreso: enero-2002
Ubicación: Yerba Buena - Tucumán
Mensajes: 259
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: Duda Existencial - Paginación

Muchas gracias por tu respuesta!!!

Lo voy a provar a ver si funciona.

:) :) :) :) :) :) :cantar:

<center><font face=Verdana size=2>Webmaster de [/CODE]<A href="http://www.salirxtucuman.com.ar" target="_blank"><img src="http://www.efrance.fr/salirxtucuman/images/titulo.gif" border=0 align="absmiddle"></a></center>
  #5 (permalink)  
Antiguo 24/07/2002, 15:39
 
Fecha de Ingreso: enero-2002
Ubicación: Yerba Buena - Tucumán
Mensajes: 259
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: Duda Existencial - Paginación

:( En Access no me funciona, y ahora no tengo instalado SQL Server. La sentencia LIMIT funciona solo con bases de datos SQL Server ???

Existe algo parecido que se pueda hacer con Access ???

Desde ya muchas gracias :cantar:

<center><font face=Verdana size=2>Webmaster de [/CODE]<A href="http://www.salirxtucuman.com.ar" target="_blank"><img src="http://www.efrance.fr/salirxtucuman/images/titulo.gif" border=0 align="absmiddle"></a></center>
  #6 (permalink)  
Antiguo 25/07/2002, 22:03
 
Fecha de Ingreso: enero-2002
Ubicación: Yerba Buena - Tucumán
Mensajes: 259
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: Duda Existencial - Paginación

Cita:
Asi, por ejemplo, si paginas de 10 en 10, la sentencia deberia ir cambiando de la siguiente manera :

SQL = &quot;SELECT * FROM tabla ORDER BY fecha LIMIT 0,10&quot;
SQL = &quot;SELECT * FROM tabla ORDER BY fecha LIMIT 10,10&quot;
etc.
Esto solo funciona con SQL Server o no funciona con nada ??? Porque yo lo prové con Access y no me funcionó ....
Hay alguna otra forma de hacer la páginación de esta forma, es decir con la sentencia en SQL ???


<center><font face=Verdana size=2>Webmaster de [/CODE]<A href="http://www.salirxtucuman.com.ar" target="_blank"><img src="http://www.efrance.fr/salirxtucuman/images/titulo.gif" border=0 align="absmiddle"></a></center>
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 21:36.