Ver Mensaje Individual
  #12 (permalink)  
Antiguo 16/08/2012, 15:22
solosoy
 
Fecha de Ingreso: julio-2012
Mensajes: 9
Antigüedad: 12 años, 4 meses
Puntos: 0
De acuerdo Respuesta: visual .net 2005 Conexion con SQL2000

Cita:
Iniciado por Dradi7 Ver Mensaje
Como se menciona comentarios arriba no es recomendable poder mostrar toda una gran cantidad de datos ya que esto consumiría bastante recursos.




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
Amigo graxias por tu respuesta, quisiera saber si sto ,o puedo hacer con el sql 2000 y tb haber si me mandas tu ejemplo de como ponerlo en visual.net te estaria muy agradecido, ya que me gusta muxo esto de la programacion pero a la vez soy novato; haber si te acuerdas de antemano muchicimas graxias