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
GOPer approfondimenti sull'uso delle stored procedure si veda:
#396 - Utilizzare l'oggetto recordset con le stored procedure di SQL Server
http://www.aspitalia.com/liste/usag/script.aspx?ID=396
#397 - Utilizzare le stored procedure di SQL Server con ASP.NET
http://www.aspitalia.com/liste/usag/script.aspx?ID=397
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Ciao a tutti. La domanda che vorrei porvi riguarda in parte questo script:nello script si utilizza una tabella di appoggio #p per salvare i dati ...
Per inserire un commento, devi registrarti alla nostra community.








Stampa
Download 




Ma non potreste mettere un esempio? Ho provato questa store ma dove devo inserire il nome della tabella che deve usare per fare la paginazione?? e in ...
Continua »»» | Rispondi »»»