Paginazione dei dati per grandi query con Asp ed Access

Siti dinamici con ASP
Impara a creare siti dinamici professionali con ASP

Scritto da Luca Ruggiero nella sezione Asp

Quando si stampano a video i dati prelevati da un database, non si può pensare di utilizzare una sola pagina per contenerli tutti, la cosa diventerebbe poco elegante, scomoda da gestire, nonchè si causerebbe un notevole rallentamento della pagina.

Asp offre la possibilità di stampare a video solo TOT record per volta, splittando i dati di TOT in TOT nella stessa pagina, utilizzando una QueryString per catalogare il numero di pagine.

Ipotizziamo il caso in cui ci si connetta al database db.mdb, precisamente alla tabella dati, si costruisca il file esempio.asp

<%@LANGUAGE = JScript%>
<%
   var Cn = new ActiveXObject("ADODB.Connection");
   var Sc = "driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("db.mdb");
       Cn.Open(Sc);
   var Sql = "SELECT * FROM dati ORDER BY id DESC";
   var Mostra = new ActiveXObject("ADODB.Recordset");
       Mostra.Open(Sql,Cn,1);
   var pag = parseInt(Request.QueryString("id"));
       if (isNaN(pag) || pag < 1) pag = 1;
       if (!Mostra.EOF) {
            Mostra.PageSize = 10;
            Mostra.AbsolutePage = pag;
       }
   var i = 0;
%>
<html>
 <head>
  <title>Paginazione per grandi query - www.lukeonweb.net</title>
 </head>
<body>

<%while (!Mostra.EOF && i<10) {%>
<table width="100%" border="1">
 <tr>
   <td><%=Mostra("campo")%></td>
 </tr>
</table><br>
<%
         i++;
      Mostra.MoveNext();
   }
%>

<table width="100%">
 <tr>
   <td width="50%">
      <%if (pag > 1) {%><a href="esempio.asp?id=<%=pag - 1%>">Precedenti</a><%}%>
      <%else {%>Precedenti<%}%>
   </td>
   <td width="50%" align="right">
      <%if (!Mostra.EOF) {%><a href="esempio.asp?id=<%=pag + 1%>">Successivi</a><%}%>
      <%else {%>Successivi<%}%>
   </td>
 </tr>
</table>

</body>
</html>
<%Cn.Close()%>
In rosso sono evidenziati i passaggi necessari per generare la paginazione.
Il ragionamento è semplice, imposto a 10, ad esempio, i record che voglio stampare a video, sia nello script nell'header che nel ciclo, incremento il contatore alla chiusura del ciclo, in fine genero due link per 'muoversi tra le pagine'.

I più cliccati della sezione Asp

:: Un semplice form mail in Asp (51.682)

:: Creazione di un Guestbook in Asp (50.783)

:: Creazione di un'area di accesso riservato in Asp (45.423)

:: Connessione ad un database MySql con Asp (25.045)

:: Connessione ad un database Microsoft SQL Server con Asp (24.069)

:: Asp e database (23.123)

:: Differenza tra i metodi get e post e recupero dei dati, attraverso Asp (22.301)

:: Una semplice area di accesso riservato senza DB in Asp (21.384)

:: Riscrivere le URL con Asp (19.743)

:: Creazione di un Sondaggio in Asp (19.100)

IN EVIDENZA
DOWNLOAD