como realizo un paginador con SQLSERVER ? en MySQL existe LIMIT con el cual puedo mostrar bloques en cambio con SQLSERVER como se hace.
Saludos.
| |||
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 |
| ||||
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 |
| ||||
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 Última edición por royrojas; 04/12/2007 a las 14:59 |
| ||||
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(). |