Ver Mensaje Individual
  #9 (permalink)  
Antiguo 16/08/2012, 11:55
Avatar de Dradi7
Dradi7
 
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 11 meses
Puntos: 220
Respuesta: visual .net 2005 Conexion con SQL2000

Como se menciona comentarios arriba no es recomendable poder mostrar toda una gran cantidad de datos ya que esto consumiría bastante recursos.


Cita:
Iniciado por Aquaventus Ver Mensaje
Hola solosoy, para temas de paginacion te paso este link :
paginacion datagridview
Saludos! .
La solucion que brinda Aquaventus esta bien pero lo que talves uno no se da cuenta que en esta solucion primero llama a todos los registros y luego muestra pagina por pagina que vendria siendo un retardo al momento de llamar la informacion que esta en el Servidor.

Yo tengo una solución que realice hace tiempo como podría paginar mis datos sin necesidad de poder llamar a todos los registros, mira este ejemplo:

Código SQL:
Ver original
  1. -- =============================================
  2. -- Author:        Luis Fernando
  3. -- Create date:   10/02/2009
  4. -- Description:   Procedimiento que simula el Limit de MySQL Server
  5. -- =============================================
  6.  
  7. ALTER PROCEDURE USP_LIMIT
  8. (
  9.     @TBL VARCHAR(MAX),  @COL VARCHAR(MAX),  @INI INT,
  10.     @FIN INT
  11. )
  12. AS
  13.     SET NOCOUNT ON;
  14.     BEGIN TRY
  15.         DECLARE @SQL NVARCHAR(MAX)    -- DECLARANDO VARIABLE A EJECUTAR
  16.         SET @SQL = N'SELECT * FROM
  17.                    (
  18.                        SELECT *,ROW_NUMER() OVER(ORDER BY '+ @COL +') AS X
  19.                        FROM '+ @TBL +'
  20.                    ) AS Y WHERE X BETWEEN ' + CONVERT(VARCHAR,@INI) +' AND ' + CONVERT(VARCHAR,@FIN) +' ';
  21.         EXECUTE SP_EXECUTESQL @SQL;
  22.     END TRY
  23.     BEGIN CATCH
  24.         PRINT 'NUMERO DE ERROR: ' + CONVERT(VARCHAR,ERROR_NUMBER());
  25.         PRINT 'MENSAJE DE ERROR: ' + ERROR_MESSAGE();
  26.     END CATCH
  27. GO
  28.  
  29. -- =============================================
  30. -- Author:        Luis Fernando
  31. -- Create date:   10/02/2009
  32. -- Description:   Procedimiento q me devuelve un conjunto de paginas depiendo la cantidad de datos a paginar
  33. -- =============================================
  34.  
  35. ALTER PROCEDURE USP_LIMIT_PAGINATION
  36. (
  37.     @TBL VARCHAR(MAX),  @REG_PAGE INT
  38. )
  39. AS
  40.     SET NOCOUNT ON;
  41.     DECLARE @SQL NVARCHAR(MAX)    -- DECLARANDO VARIABLE A EJECUTAR
  42.     SET @SQL = N'SELECT COUNT(*) / ' + CAST(@REG_PAGE AS VARCHAR) + ' FROM ' + @TBL;
  43.     EXECUTE SP_EXECUTESQL @SQL;
  44. GO

Lo que hace el primer stored procedure es poder solo mostrar o llamar una cierta cantidad de registros mandando como parametros lo siguiente:
  • @TBL que viene siendo el nombre de la tabla
  • @COL que viene siendo el nombre de la columna a ordenar este parametro es importante para realizar la paginacion
  • @INI viene siendo el inicio del registro a consultar
  • @FIN viene siendo el final del registro a consultar

En el segundo stored procedure lo único que se hace es poder devolver la cantidad de paginas que se va a poder mostrar para la paginación.

Ahora en tu aplicacion VB. NET o C# debes hacer lo siguiente:

Primero
Debes crear una función que invoque el segundo stored procedure en el evento load con el fin de poder listar el total de paginas en un combo o una lista o cualquier objeto que tu desees, debes enviar la tabla a filtrar y el total de registros a ver por cada pagina

Segundo
Debes crear una funcion que invoque el primer stored procedure y en el evento load, envias como parametro @INI 0 y como parametro @FIN el total de registros por pagina enviado en el primer stored procedure

Tercero
Con esto ya te estará mostrando una cierta cantidad de registros y luego lo único que deberías hacer es programar en tu objeto que cada vez que seleccione invoque el segundo stored procedure enviando el correspondiente parametro @INI y @FIN esto te puedes guiar tambien de la pagina que envio Aquaventus

Te enviara la solución pero lo tengo en mi casa y ahora me encuentro yo en mi oficina
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones

Última edición por Dradi7; 16/08/2012 a las 11:56 Razón: Falto completar un párrafo