Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Paginación para un sitio web con SQLSERVER

Estas en el tema de Paginación para un sitio web con SQLSERVER en el foro de SQL Server en Foros del Web. como realizo un paginador con SQLSERVER ? en MySQL existe LIMIT con el cual puedo mostrar bloques en cambio con SQLSERVER como se hace. Saludos....
  #1 (permalink)  
Antiguo 03/12/2007, 22:38
 
Fecha de Ingreso: octubre-2003
Ubicación: BolivianitA
Mensajes: 235
Antigüedad: 20 años, 7 meses
Puntos: 0
Paginación para un sitio web con SQLSERVER

como realizo un paginador con SQLSERVER ? en MySQL existe LIMIT con el cual puedo mostrar bloques en cambio con SQLSERVER como se hace.

Saludos.
__________________
rocita
  #2 (permalink)  
Antiguo 04/12/2007, 09:52
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 23 años, 7 meses
Puntos: 3
Re: Paginación para un sitio web con SQLSERVER

Se puede emular el Limit como explican acá:
http://www.forosdelweb.com/f87/contr...p-10-a-536574/

salu2
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #3 (permalink)  
Antiguo 04/12/2007, 11:16
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Re: Paginación para un sitio web con SQLSERVER

Igual y si esa paginación viene de un origen ya filtrado, puedes hacer uso de las herramientas que te proporcione el lenguaje Web que estas usando, ¿con qué estas programando?
  #4 (permalink)  
Antiguo 04/12/2007, 14:49
Avatar de royrojas  
Fecha de Ingreso: diciembre-2004
Mensajes: 458
Antigüedad: 19 años, 4 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
  #5 (permalink)  
Antiguo 04/12/2007, 15:13
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
Re: Paginación para un sitio web con SQLSERVER

Considerando que la cláusula TOP(@var) sólo funciona a partir de SQL Server 2005, sería una excelente alternativa usar la función de ranking ROW_NUMBER().
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:14.