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