Ver Mensaje Individual
  #4 (permalink)  
Antiguo 04/12/2007, 14:49
Avatar de royrojas
royrojas
 
Fecha de Ingreso: diciembre-2004
Mensajes: 458
Antigüedad: 19 años, 10 meses
Puntos: 3
Re: Paginación para un sitio web con SQLSERVER

si son pocos registros, un objeto (entiendase dataset) no muy pesado se podria usar los recursos por ejemplo de .net, como el grid que ya te pagina.

Pero si son muchos registros y la paginación es obligatoria yo te diria que uses algo asi:

El siguiente procedimiento te retorna dos tablas, la primera con los registros solicitados y la segunta con la cantidad de paginas que aplican para la cantidad de registros solicitados.

Recibe dos parametros, "numero de registros" y "numero de pagina"
@num_registros = numero de registros que muestra la consulta
@num_pagina = la pagina que se va a mostrar

Código:
CREATE PROCEDURE Listar_Noticias_Pag](
@num_registros smallint = 100,
@num_pagina smallint = 1)
AS
   SET NOCOUNT ON
BEGIN

Declare @NoRegs as smallint
SET @NoRegs = @num_registros * (@num_pagina - 1)

SELECT TOP(@num_registros)
     [id_noticia]
    ,[nom_descriptor]
    ,[nom_noticia]
    ,[des_noticia]
    ,[fec_publicacion]
    ,[fec_vencimiento]
    ,[ind_estado]
FROM vrcNoticiaEspecialActivos
WHERE id_noticia not in (
    SELECT TOP(@NoRegs) id_noticia
    FROM vrcNoticiaEspecialActivos
    ORDER BY fec_publicacion DESC)
ORDER BY fec_publicacion DESC

/* Retorna el numero total de estudios registrados */
DECLARE @CantidadRegistros as smallint
SELECT @CantidadRegistros = COUNT(*) FROM vrcNoticiaEspecialActivos
SELECT dbo.CantidadPaginas(@CantidadRegistros,@num_registros) TotalPaginas

END

La funcion CantidadPaginas seria algo asi:

Código:
CREATE FUNCTION CantidadPaginas
(
@CantidadRegistros as decimal,
@RegistrosPagina as decimal
)
RETURNS int
AS
BEGIN
-- Declare the return variable here
DECLARE @retorno as tinyint
set @retorno = @CantidadRegistros / @RegistrosPagina
if  ((@CantidadRegistros / @RegistrosPagina) % 2 > 0 )
set @retorno = @retorno + 1

return @retorno

END
__________________
roy rojas
Programación en Español: DotNetcr.com

Última edición por royrojas; 04/12/2007 a las 14:59