Popular

Obten claves web y navega gratis Router keygen para Android

Error 403 Forbidden con phpmyadmin y WAMP Server

Realizar suma, resta y división con javascript

Manejo de paginado con consulta de SQL Server.

Para no perder costumbre hoy nuevamente estoy levantado desde temprano es un excelente sábado a donde me espera un viaje bastante largo por cierto, en estas semanas que he pasado de todo desde intenso trabajo, hasta el estrés total, hoy realmente no debería estar escribiendo estoy bastante agotado de esto de programación pocas veces llego a mi casa y digo no quiero saber que hay una computadora jaja.
Bueno hoy aprenderemos cómo hacer un paginado con SQL Server, en mi caso les pasaré una consulta en SQL Server que básicamente tengo ya implementada está consulta si usted quiere utilizarla la tendrá que modificar colocándola en Stored Procedure (Procedimiento Almacenado).
Es un ejemplo muy sencillo ya que últimamente aparte de dedicarme a programar con C#, pues he aprendido bastante en el uso de programación de Querys principalmente en DB2 AS400 pero pues SQL Server es todavía más sencillo.
Les muestro el QUERY en este momento y posteriormente lo iré explicando, anexo es una tabla común y corriente no cuide nombre ni mucho menos, aclaro esto porque no quiero comentarios fuera de lugar por estas cosas, pero claro están en todo derecho de comentar lo que quieran.
BEGIN
DECLARE @CURRENTPAGE INTEGER;
DECLARE @ROWPAGE INTEGER;
DECLARE @COUNT INTEGER;
DECLARE @STARTPAGE INTEGER;
DECLARE @TOTALPAGE INTEGER;

SET @ROWPAGE = 10;
SET @CURRENTPAGE = 1;

SELECT @COUNT = COUNT(*) FROM [EMPLEOS].[DBO].[EMPLEO];

IF @COUNT > 0
      BEGIN
            SET @TOTALPAGE = (@COUNT / @ROWPAGE) + 1;
            SET @STARTPAGE = (@ROWPAGE * @CURRENTPAGE) - @ROWPAGE + 1;
      END

      SELECT * FROM (
            SELECT ROW_NUMBER() OVER(ORDER BY empleoId ASC)  AS ROW,
                  [empleoId]
                  ,[titulo]
                  ,[empresa]
                  ,[correo]
                  ,[descripcion]
                  ,[fecha]
                  ,[hasSend]
            FROM [Empleos].[dbo].[empleo]
      ) AS T
      WHERE T.ROW BETWEEN(@STARTPAGE) AND ( (@STARTPAGE + @ROWPAGE)-1)
  END
Glosario:
@CURRENTPAGE: Se me ocurre que posiblemente se tenga un control donde podamos seleccionar la  página actual o sea el páginado deberá mostrarte de esa página hacia adelante.
@ROWPAGE: Se me ocurre también que nuestro control de páginado pudiera tener la opción para perguntar cuantos registros por páginas queremos ver, esto nos servirá para que si queremos ver 100 páginas pues nos muestre del 1-100 en la primera pagina y del 2-200 en la segunda, etc.
@COUNT: Me sirve para calcular el número total de elementos de la tabla.
@STARTPAGE: Me sirve para poder calcular de que página va a iniciar a mostrar esto depende de la variable que recibimos @ROWPAGE y @COUNT.
@TOTALPAGE: Me sirve para calcular el número máximo de páginas que tenemos tal vez para retornarlo de la consulta en algún momento y mostrarlo al usuario en este momento solo lo calculo más no lo devuelvo en la consulta (Mejora de consulta).
Cómo tal las variables @CURRENTPAGE y @ROWPAGE actualmente las coloque fijas pero si creas un stored procedure serían variables que recibirías como parámetro para realizar la consulta.
Escriban sus comentarios y/o dudas, no lo explique tan bien porque voy a salir de viaje pero creo que está bastante entendible el código no hay mucho que buscarle o eso espero igual sus dudas comentenlas y con gusto las resuelvo…

Saludos Excelente sábado para tod@s. 

Comentarios

Entradas populares de este blog

Error 403 Forbidden con phpmyadmin y WAMP Server

Número de filas afectadas por instrucción PL/SQL en Oracle [Utilidades].

Como truncar un número decimal en C# sin redondear.