ADO supporta, attraverso l'oggetto Recordset, la paginazione di una query, ovvero la suddivisione dei risultati in un numero tale da consentire una facile visualizzazione a video.
Sfruttando SQL Server è possibile effettuare questa suddivisione già sul database, fornendo quindi i risultati esatti (dal record X al record Y) ed evitando quindi di inviare tutti i record estratti dalla query.
Si tratta di una semplice Stored Procedure che usa una tabella temporanea, di appoggio, per inserire una chiave all'interno di questa tabella, all'interno della quale un campo IDENTITY farà da identificativo dell'ordine di inserimento.
Alla fine si tratta di unire la tabella di origine con quella che contiene gli ID ordinati e filtrare in base al camp RowID, che indica la posizione del record.
CREATE PROCEDURE GetSearch_Paging ( @what nvarchar(50), @PageIndex int, @PageSize int ) AS -- ricavo gli estremi inferiore e superiore -- la prima pagina è 1 DECLARE @Upper int DECLARE @Lower int SET @Lower = @PageSize * (@PageIndex - 1) SET @Upper = @Lower + @PageSize -- tabella temporanea CREATE TABLE #Paging ( RowID int NOT NULL IDENTITY(1,1) PRIMARY KEY, OriginalID int NOT NULL ) -- inserisco la chiave della tabella in quella di appoggio INSERT INTO #Paging(OriginalID) SELECT ID FROM tabella WHERE campo LIKE '%' + @what + '%' -- estraggo i dati dalle due tabelle SELECT t.* FROM #Paging p, tabella t WHERE p.OriginalID = t.ID AND p.RowID >= @Lower AND p.RowID <= @Upper GO
Per approfondimenti sull'uso delle stored procedure si veda:
#396 - Utilizzare l'oggetto recordset con le stored procedure di SQL Server
https://www.aspitalia.com/liste/usag/script.aspx?ID=396
#397 - Utilizzare le stored procedure di SQL Server con ASP.NET
https://www.aspitalia.com/liste/usag/script.aspx?ID=397
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.