Ver Mensaje Individual
  #127 (permalink)  
Antiguo 24/10/2011, 09:47
PabloManuel
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 13 años, 5 meses
Puntos: 6
Respuesta: Biblioteca de Clases,Funciones y Sub-rutinas.

Crear un RecordSet paginado

Para aligerar código he creado una función que me devuelve un recordset con el puntero posicionado en la página deseada:

Función:

Código ASP:
Ver original
  1. <%
  2. 'Parámetros:
  3. 'Sentencia: Sentencia SQL con la que generar el Recordset
  4. 'Pagina_Solicitada: Página del recordset solicitada para mostrar
  5. 'Mostrar: número de registros por página
  6. '
  7. 'La función crea el Recordset solicitado y devuelve un array:
  8. ' Posición 0 : Páginas totales resultantes
  9. ' Posición 1 : Página en la que se posiciona, esta puede diferir de la
  10. '              solicitada, es decir, si se solicita la página 32 del recordset
  11. '              y sólo hay 28 páginas, el valor será 28.
  12. '              
  13. Function CrearRs_paginado (Sentencia, Pagina_Solicitada, Mostrar)
  14.    
  15.     Dim Devuelve(1)
  16.    
  17.     if Pagina_Solicitada = "" then
  18.         Pagina_Solicitada = 1
  19.     Else
  20.         Pagina_Solicitada=cint(Pagina_Solicitada)
  21.     End if
  22.  
  23.     if Mostrar = "" then
  24.         Mostrar = 5
  25.     Else
  26.         Mostrar = Cint(Mostrar)
  27.     End if
  28.    
  29.     Set rs=server.createobject("adodb.recordset")
  30.     Rs.pagesize = Mostrar
  31.     Rs.cachesize = Mostrar
  32.    
  33.     Rs.open Sentencia,conn,3,1
  34.     cant_paginas=rs.pagecount
  35.  
  36.     If Pagina_Solicitada > cant_paginas then
  37.         Pagina_Solicitada = cant_paginas
  38.     end if
  39.                          
  40.     if Pagina_Solicitada <1 then
  41.         Pagina_Solicitada = 1
  42.     end if
  43.            
  44.     If cant_paginas = 0 Then
  45.        
  46.         'Cantidad de páginas
  47.         Devuelve(0) = 0
  48.        
  49.         'Página Solicitada
  50.         Devuelve(1) = 0
  51.         CrearRs_paginado = Devuelve
  52.        
  53.     Else
  54.    
  55.         Rs.absolutepage = Pagina_Solicitada    
  56.         Devuelve(0) = rs.pagecount
  57.         Devuelve(1) = Pagina_Solicitada
  58.         CrearRs_paginado = Devuelve
  59.        
  60.     End If 
  61.  
  62.  
  63. End Function  
  64. %>

Desde el documento actuamos así:
Código HTML:
Ver original
  1.  
  2.     <%
  3.  
  4.     Pags_NumPag = CrearRs_Paginado("Select * From Boletines_Subcr", 523, 10)
  5.    
  6.     For I=1 To 10
  7.         If Rs.Eof Then Exit For
  8.  
  9.         %>
  10.         <div><%=Rs("Email")%></div>
  11.         <%
  12.         Rs.MoveNext
  13.  
  14.     Next
  15.    
  16.     Response.Write "Página " & Pags_NumPag(1) & " de " & Pags_NumPag(0)
  17.     CerrarRs
  18.     %>
  19.         <a href="borrar.asp?cod=&page=<%=Pags_NumPag(1)-1%>"> Anterior </a> | <a href="borrar.asp?cod=&page=<%=Pags_NumPag(1)+1%>"> Siguiente </a>
  20.  
  21.    
  22. </body>

He preferido hacerlo así para que el diseño de muestra de el recordset sea propio de cada página.

Última edición por PabloManuel; 24/10/2011 a las 10:09 Razón: Ahora aparecen los botones.