Come accennato, esistono cinque modalità differenti per scorrere il RecordSet. Ognuna di esse ha determinate caratteristiche mancante alle altre. La lezione si struttura nella seguente modalità: vengono illustrate una per una le tecniche fornendo direttamente un esempio di codice Asp prima di passare alla successiva.
La prima di queste tecniche consente di muoversi solamente in avanti da un record al successivo all'interno di un recordset. La sintassi per svolgere tale tecnica è la seguente (il recordset verrà indicato con rs):
rs.movenext
L'utilizzo della sintassi appena vista è molto comodo quando dobbiamo scorrere all'interno di un ciclo tutto il contenuto di un recordset. Lo script successivo, fornirà un chiaro esempio di utilizzo associato al controllo rs.oef.
<%
...
do while not(rs.eof)
'operazioni sul record corrente
...
'Avanzamento al record successivo
rs.movenext
loop
...
%>
Lo script appena spiegato, è stato già stato visto in azione nella fase di creazione della libreria.
La seconda tecnica di movimento all'interno di un recordset consente di posizionare il nostro puntatore al recordset esattamente all'ultimo record presente.La sintassi è la seguente (rs indica il recordset):
rs.movelast
Ora visioniamo un esempio di codice asp per mostrare a video i dati presenti nell'ultimo record del nostro recordset appena creato.
<%
...
'Posizionamento Ultimo record
rs.movelast
'Mostrara a video i valori
response.write rs(1) & "<br>"
response.write rs(2) & "<br>"
...
response.write rs(N) & "<br>"
...
%>
Nello script appena proposto, dopo aver aperto il database e creato il recordset, spostiamo con l'apposita istruzione il puntatore a fine recordset. Una volta fatto ciò utilizziamo una serie di response.write per mostrare a video tutti i campi del recordset. Terminata questa fase, il database andrà chiuso.
La terza tecnica di posizionamento consiste nell'uso di movefirst. A differenza del precedente, questa istruzione consente di posizionare il cursore al primo record del recordset appena creato. Va ricordato che non è obbligatorio usare questa istruzione ogni volta che si genera un recordset in quanto il puntatore viene già posizionato in tale posizione. L'uso di questa istruzione si può verificare durante un ciclo e al verificarsi di determinate condizioni ripartire la lettura dall'inizio del recordset. Ora vedremo in esempio questa situazione:
<%
do while not(rs.eof)
'operazioni sul record corrente
...
'Verifica di una condizione particolare
if mia_condizione = mio_valore then
' Torno al primo record
rs.movefirst
else
'Avanzamento al record successivo
rs.movenext
end if
loop
...
%>
La quarta tecnica di movimento all'interno del recordset consente di spostarci al record precedente. Tale funzione si svolge con l'istruzione rs.movePrevious. Questa funzione risulta utile, ad esempio, quando in una tabella abbiamo una classifica ordinata e,senza voler usare l'ordinamento in Sql, vogliamo mostrarla al contrario. Ora verrà illustrato il codice relativo.
<%
...
rs.moveLast
do while not(rs.bof)
'operazioni sul record corrente
...
'Mostrara a video i valori
response.write rs(1) & "<br>"
response.write rs(2) & "<br>"
...
response.write rs(N) & "<br>"
'ritorno al record precedente
rs.movePrevious
loop
...
%>
L'ultima tecnica di spostamento nel recordset è quella che consente il maggior movimento. Infatti è possibile muoversi tra i record di un passo K di distanza. Il valore K potrà assumere sia valori negativi che positivi. Uniche limitazioni sono: il valore di K deve essere intero e contenuto nel recorset. La sintassi necessaria è la seguente:
<%
...
do while not(rs.eof)
'operazioni sul record corrente
...
'Avanzamento al record successivo
rs.move 3
loop
...
%>
Lo script appena proposto si sposta avanti leggendo i record numero 1, 4, 7 ecc. Nello script successivo, vedremo la lettura ma in senso contrario.
<%
...
rs.moveLast
do while not(rs.bof)
'operazioni sul record corrente
...
'Mostrare a video i valori
response.write rs(1) & "<br>"
response.write rs(2) & "<br>"
...
response.write rs(N) & "<br>"
'ritorno al record precedente
rs.move -3
loop
...
%>
Supponiamo di avere il recordset contenete N record. Lo script appena proposto, leggerà i record con indice N, N-3, N-6, ecc.