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

Paginando con ADO

Estas en el tema de Paginando con ADO en el foro de ASP Clásico en Foros del Web. Usando ADO puedes paginar datos N registros a la vez. Los registros son extraidos N veces a la vez, para que el tiempo de acceso ...
  #1 (permalink)  
Antiguo 17/05/2002, 10:48
 
Fecha de Ingreso: octubre-2000
Ubicación: Juarez, Chih.
Mensajes: 161
Antigüedad: 24 años, 1 mes
Puntos: 0
Paginando con ADO

Usando ADO puedes paginar datos N registros a la vez. Los registros son extraidos
N veces a la vez, para que el tiempo de acceso sea disminuido asi que los datos serán
fáciles de mostrar.

<%@ LANGUAGE="VBSCRIPT" %>
<% Option Explicit %>
<!--#include virtual="/ADOVBS.inc"-->
<%
Const NumPerPage = 10

'Retrieve what page we're currently on
Dim CurPage
If Request.QueryString("CurPage") = "" then
CurPage = 1 'We're on the first page
Else
CurPage = Request.QueryString("CurPage")
End If

Dim conn
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DSN=MyDB"

'Explicitly Create a recordset object
Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")

'Set the cursor location property
rs.CursorLocation = adUseClient

'Set the cache size = to the # of records/page
rs.CacheSize = NumPerPage
'Open our recordset
Dim strSQL
strSQL = "SELECT Name,Salary FROM Employee ORDER BY Name"
rs.Open strSQL, Conn

rs.MoveFirst
rs.PageSize = NumPerPage

'Get the max number of pages
Dim TotalPages
TotalPages = rs.PageCount

'Set the absolute page
rs.AbsolutePage = CurPage

'Counting variable for our recordset
Dim count
%>
<HTML>
<BODY>
<B>Name - Salary</B><BR>
<%
'Set Count equal to zero
Count = 0
Do While Not rs.EOF And Count < rs.PageSize
Response.Write(rs("Name") & " - " & rs("Salary") & "<BR>")
Count = Count + 1
rs.MoveNext
Loop
'Print out the current page # / total pages
Response.Write("Page " & CurPage & " of " & TotalPages & "<P>")

'Display Next / Prev buttons
if CurPage > 1 then
'We are not at the beginning, show the prev button
Response.Write("<INPUT TYPE=BUTTON VALUE=PREV ONCLICK=""document.location.href='thisfi le.asp?curpage=" & curpage - 1 & "';"">")
End If

if CInt(CurPage) <> CInt(TotalPages) then
'We are not at the end, show a next button
Response.Write("<INPUT TYPE=BUTTON VALUE=NEXT ONCLICK=""document.location.href='thisfi le.asp?curpage=" & curpage + 1 & "';"">")
End If
%>
</BODY>
</HTML>
  #2 (permalink)  
Antiguo 17/05/2002, 10:50
 
Fecha de Ingreso: octubre-2000
Ubicación: Juarez, Chih.
Mensajes: 161
Antigüedad: 24 años, 1 mes
Puntos: 0
Re: Paginando con ADO

Ahora revisando los parametros que vemos que aqui se usan...

Poniendo un valor entero para 'PageSize' le indicamos a ADO cuantos registros por página queremos mostrar.

'PageCount' indica cuantos páginas tendríamos en el query dependiendo de el 'pagesize'.Obviamente pagesize debe ser inicializado antes de pagecount. Pagesize tiene un valor default de 10.

'AbsolutePage' es un valor usado para indicarle a ADO que página exactamente queremos mostrar.

'CacheSize' le dice a ADO que 'cachee' N renglones. Este valor será puesto al mismo valor de 'PageSize'. De esta forma ADO no leerá de vuelta la BD a menos que tu lo solicites. Esta última propiedad es vital para la optimización del acceso a la BD

'por: www.4guysfromrolla.com
El archivo adovbs.inc lo pudes bajar de aquí:
http://www.4guysfromrolla.com/webtech/code/adovbs.txt
  #3 (permalink)  
Antiguo 02/08/2002, 02:04
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: Paginando con ADO

una pregunta de un novato:
no encuentro en ningun lado informacion concisa sobre paginacion, por eso te voy a preguntar los detalles de esta que estas usando aca:
1) decis que cachesize es para que cachee N renglones. Esto quiere decir que va a devolver cierta cant de registros del total de la busqueda? Si es asi como sabe de donde hasta donde tomar esa cantidad entre todos los resultados?
Como es eso de que al poner cahesize igual a pagesize ado no leera de vuelta la bd?
2) no habria que cerrar el rs al final de la pagina por abrirlo siempre cada vez que avanzamos o retrocedemos?

Perdon por la ignorancia.
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 13:47.