Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/07/2002, 14:57
CABEZOTA
 
Fecha de Ingreso: enero-2002
Ubicación: Yerba Buena - Tucumán
Mensajes: 259
Antigüedad: 23 años, 4 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>