Ver Mensaje Individual
  #4 (permalink)  
Antiguo 02/05/2014, 09:18
PabloManuel
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 13 años, 5 meses
Puntos: 6
Respuesta: Arto de paginar.

Código ASP:
Ver original
  1. <%
  2. 'Parámetros:
  3. 'Sentencia_Where: Sentencia SQL con la que generar el Recordset desde el Where al final
  4. 'Pagina_Solicitada: Página del recordset solicitada para mostrar
  5. 'Mostrar: número de registros por página
  6. 'Sentencia_Select: usada para usar * o distinct....
  7. '
  8. 'La función crea el Recordset solicitado y devuelve un array:
  9. ' Posición 0 : Páginas totales resultantes
  10. ' Posición 1 : Página en la que se posiciona, esta puede diferir de la
  11. '              solicitada, es decir, si se solicita la página 32 del recordset
  12. '              y sólo hay 28 páginas, el valor será 28.
  13. '              
  14. Function CrearRs_paginado_MySQL (Tabla, Sentencia_Where, Pagina_Solicitada, Mostrar, Sentencia_Select)
  15.    
  16.     Dim Devuelve(1)
  17.    
  18.     If Tabla="" Then Exit Function
  19.     If Sentencia_Select = "" Then Sentencia_Select="*"
  20.    
  21.     'Hay que crear un Rs para obtener el número de registros, en MySQL no
  22.     'funciona el Rs.RecordCount, pasamos el valor del campo a la variable y
  23.     'cerramos el Rs.
  24.    
  25.     CrearRs "SELECT Count(*) as Num_Registros FROM " & Tabla & " " & Sentencia_Where
  26.     Num_Registros = Cint(Rs("Num_Registros"))
  27.     CerrarRs
  28.  
  29.     if Mostrar = "" then
  30.         Mostrar = 35
  31.     Else
  32.         Mostrar = Cint(Mostrar)
  33.     End if
  34.  
  35.     ' Averiguamos la cantidad de páginas y redondeamos, si la división devuelve
  36.     ' 2.34874 páginas, es que tenemos 3 páginas a mostrar.
  37.     Cant_Paginas = Redondear_Arriba(Num_Registros/Mostrar, 0)
  38.            
  39.     ' IF para saber que página mostrar, si está en blanco solicitamos la
  40.     ' primera y si no averiguamos que no está fuera de los límites y la
  41.     ' cuadramos.
  42.     If Pagina_Solicitada = "" Then
  43.          Pagina_Solicitada = 1
  44.     Else
  45.          Pagina_Solicitada = CInt(Pagina_Solicitada)
  46.          If Pagina_Solicitada > Cant_Paginas Then Pagina_Solicitada = Cant_Paginas
  47.          If Pagina_Solicitada < 1 Then Pagina_Solicitada = 1
  48.  
  49.     End If
  50.  
  51.     ' Creamos el Rs
  52.     ' Recordamos: Limit X, N: Límite desde el resgistro X hasta los N siguientes
  53.    
  54.     CrearRs_paginado_MySQL_sql = "select " & Sentencia_Select & " from " & Tabla & " " & Sentencia_Where & " Limit " & ((Pagina_Solicitada-1) * Mostrar) & ", " & Mostrar
  55.    
  56.     CrearRs CrearRs_paginado_MySQL_sql
  57.    
  58.          
  59.     If Rs.EOF Then
  60.        
  61.         'Cantidad de páginas
  62.         Devuelve(0) = 0
  63.        
  64.         'Página Solicitada
  65.         Devuelve(1) = 0
  66.         CrearRs_paginado_MySQL = Devuelve
  67.        
  68.     Else
  69.    
  70.         Devuelve(0) = Cant_Paginas
  71.         Devuelve(1) = Pagina_Solicitada
  72.         CrearRs_paginado_MySQL = Devuelve
  73.        
  74.     End If 
  75.  
  76.  
  77. End Function  
  78.  
  79. %>

Esta es la función que uso para crear los RecordSet, depende de otras como CrearRs que tan sólo crea el recordset. Estoy deseando de perderla de vista.
Una vez que tengo el recordset creo la tabla, casi todas iguales al 90%, pero por culpa de ese 10% no puedo estandarizarlas.