Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/01/2012, 16:30
Avatar de rafaely2011
rafaely2011
 
Fecha de Ingreso: septiembre-2011
Ubicación: Sancti Spiritus
Mensajes: 10
Antigüedad: 13 años, 3 meses
Puntos: 0
Exclamación Paginar php+mssql

Partiendo de un tema publicado en el foro anteriormente logre paginar mis resultados partiendo de dos procedimientos almacenados ahora bien a la hora de paginar lo hace todo perfecto pero si por ejemplo le paso algun parametro para filtrar el contenido me deja los resultados de algunas paginas en blanco por ejemplo tengo una tabla con varios campos entre ellos uno identity autoincremetado

tabla mbasicos

idinventario int
idcnmb int
valor int
consecutivo int(es valor es autoincrementado)


los procedimientos utilizados son los siguiente en este caso dos uno para devolver la cantidad de registros totales y otro para que devuelva los resultados de la consulta paginados

Código:
CREATE PROCEDURE [dbo].[paginacion_ejemplo]
--NUMERO DE PAGINA A MOSTRAR
@index int,
--TOTAL DE REGISTROS POR PAGINA
@num_regs int,
--CNMB
@cnmb int

AS
    
    BEGIN

        --ESTOS SERNA LOS INDICES PARA LA PAGINACION
		DECLARE @maximo numeric
        DECLARE @minimo numeric

        SELECT @maximo = (@index * @num_regs)
        SELECT @minimo = @maximo - (@num_regs - 1)

        --CREACION DE LA TABLA TEMPORAL PARA LA PAGINACION
        --NUM_ORDEN SERVIRA DE INDICE PARA EXTRAER LOS REGISTROS

        CREATE TABLE #tmpListado(
            IdNroInvent varchar(10),
            IdCNMB varchar(10),
            Descripcion varchar(40),
            ValorMn money,
            consecutivo int,
        )

        --INSERTAR LOS DATOS A LA TABLA TEMPORAL DIRECTAMENTE DESDE EL SELECT
        INSERT #tmpListado SELECT  IdNroInvent, IdCNMB, Descripcion, ValorMn, consecutivo
        FROM tMBasicos
        WHERE IdCNMB = @cnmb
        ORDER BY consecutivo

        --UNA VEZ CARGADOS LOS DATOS LOS EXTRAEMOS
        --CON UN SELECT FILTRADO POR LOS VALORES DE LA PAGINACION
        SELECT  IdNroInvent, IdCNMB, Descripcion, ValorMn, consecutivo
        FROM #tmpListado
        WHERE consecutivo BETWEEN @minimo AND @maximo

    END
y este q devuelve la cantidad total de registros

Código:
CREATE PROCEDURE [dbo].[paginacion_ejemplo_registros]
--CNMB
@cnmb int
AS
    
    BEGIN
SELECT     IdNroInvent, IdCNMB, Descripcion, ValorMn, consecutivo
FROM         tMBasicos
WHERE IdCNMB = @cnmb
END
segun he revizado el problema consiste en el SP [paginacion_ejemplo] que al seleccionar de la tabla temporal tiene encuenta que el valor del campo consecutivo este dentro de los parametros @minimo y @maximo . por favor si alguien me puede dar alguna idea de como solucionar para que me muestre todos los registro por paginas . porque me los muestra por ejemplo si filtro el cnmb= 501 entonces si el consecutivo esta fuera del valor del 1 al 20 me lo muestra en la otra pagina y sin embargo tengo q muestre los primeros 20 perdonen si me explico mal pero me paerece q asi es mi problema ojala me puedan ayudar esto me tiene al borde jejej gracias de ante manos