Ver Mensaje Individual
  #3 (permalink)  
Antiguo 24/10/2011, 09:43
PabloManuel
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 13 años, 5 meses
Puntos: 6
Respuesta: Función de paginación : no me funciona.

Solucionado:

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. %>
En el documento:

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 Pags_NumPag(0) &"<br/>"
  17.     Response.Write Pags_NumPag(1)
  18.     CerrarRs
  19.     %>
  20.  
  21.  
  22.    
  23. </body>

Como veis, se le dice que muestre la página 523, paginando de 10 en 10, pero tan sólo hay 253 páginas, por lo tanto devuelve una posición 253 de 253 páginas.

PD. A ver si dejo de ser tan vago y uso Option Explicit.

Última edición por PabloManuel; 24/10/2011 a las 09:43 Razón: error.