Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Oggetto RecordSet

Alcuni metodi molto utili per le nostre creazioni
Alcuni metodi molto utili per le nostre creazioni
Link copiato negli appunti

In quest'ultima parte studieremo due metodi molto utili e veloci dell'oggetto RecordSet mostrando i relativi vantaggi e svantaggi. Ogni volta conclusa una spiegazione teorica, verrà mostrato una porzione di script che mostra l'utilizzo pratico di quanto appena spiegato.

Il primo metodo che intendo spiegare, è forse quello più usato nell'utilizzo dei RecordSet. Questo metodo consente di ordinare il contenuto di un RecordSet in base ai valori presenti su una o più colonne della stessa tabella. Ora, per comprendere meglio la situazione, mostriamo graficamente la situazione di un RecordSet dopo la generazione. Supponiamo che il RecordSet che vedremo in seguito, è stato generato tramite stringa Sql estraendo da un catalogo di canzoni solamente quelle da discoteca senza impostare nessun valore d'ordine.

Id
Titolo Canzone
Dee Jay
Durata ( Sec )
6 Judgement Day D Devils 240
18 Emergenzy remix Prezioso 260
63 Don't let me down Mabel 355
76 All I need Sally Can Dance 319
165 Discotek People Molella 302
206 Genik Molella 240

Supponiamo ora di voler mostrare a video il RecordSet appena visto ma ordinato per il nome del Dee Jay. E' inutile pensare di effettuare una serie di confronti di coppie di valori per ordinare i record presenti. Infatti, questo lavoro si può tranquillamente far eseguire da Active Server Page dando un semplice comando.

<html>
<head>
<title>Musica da Discoteca</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<center>
<TABLE border="0" width="400">
<TR bgcolor="#000000">
<TD width="25%"><center><b><font color="#FFFFFF">Id</font></b></center></TD>
<TD width="25%"><center><b><font color="#FFFFFF">Titolo
Canzone</font></b></center></TD>
<TD width="25%"><center><b><font color="#FFFFFF">Dee
Jay</font></b></center></TD>
<TD width="25%"><center><b><font color="#FFFFFF">Durata
(Sec)</font></b></center></TD>
</TR>

<%
' Apertura del Database e creazione recordSet

dim strCode
strCode="innovatel"
dim intVolta
intVolta="0"
Set Conn=Server.CreateObject("ADODB.Connection")
strConn="driver={Microsoft Access Driver (*.mdb)}; "
strConn=strConn & " DBQ=" & Server.MapPath("musica.mdb")
strConn=strConn & ";pwd=" & strCode
Conn.Open strConn

sql = "SELECT * FROM canzoni"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn ,3,3

' Ordinamento in base al nome del Dee Jay
rs.sort = "deejay"

'Mostro a video il RecordSet ordinato
do while not(rs.eof)
  if intVolta="1" then
    intVolta="0"
    intTesto="#00FF99"
    intSfondo="#FFFF00"
  else
    intVolta="1"
    intTesto="#FFFF99"
    intSfondo="#33CCFF"
  end if
%>
<TR bgcolor="<%=intSfondo%>">
<TD width="25%"><%=rs(0)%></TD>
<TD width="25%"><%=rs(1)%></TD>
<TD width="25%"><%=rs(2)%></TD>
<TD width="25%"><%=rs(3)%></TD>
</TR>
<%
rs.movenext
loop
' Chiudo il RecordSet ed il relativo database

rs.Close
set rs = Nothing
conn.Close
set conn = Nothing
%>
</TABLE>
</center>
</body>
</html>

Ora, a video otterremo la seguente visione del RecordSet:

Id
Titolo Canzone
Dee Jay
Durata ( Sec )
6 Judgement Day D Devils 240
63 Don't let me down Mabel 355
165 Discotek People Molella 302
206 Genik Molella 240
18 Emergenzy remix Prezioso 260
76 All I need Sally Can Dance 319

Grazie alla figura precedente, abbiamo visto la nuova forma di presentazione del RecordSet. E' possibile osservare la presenza in archivio di un Dee Jay con due canzoni. Supponiamo di voler eseguire, nel caso ci fossero più canzoni appartenenti allo stesso Dee Jay, un ulteriore ordinamento in base alla durata (espressa in secondi) delle rispettive canzoni. Per far ciò è necessario apportare una piccolissima e semplicissima modifica nello script appena illustrato dove si ordina il RecordSet:

<%
....
' Ordinamento in base al nome del Dee Jay
rs.sort = "deejay, durata"
...
%>

Ora mostrerò la stessa tabella ordinata di prima, ma l'ordinamento verrà fatto tenendo conto del secondo criterio di ordinamento:

Id
Titolo Canzone
Dee Jay
Durata ( Sec )
6 Judgement Day D Devils 240
63 Don't let me down Mabel 355
206 Genik Molella 240
165 Discotek People Molella 302
18 Emergenzy remix Prezioso 260
76 All I need Sally Can Dance 319

Ora, dopo aver visto due applicazioni pratiche del metodo sort, illustro la formula generale per l'utilizzo:

<%
...
rs.sort ="colonna1 [ DESC ] , [ colonna2
(DESC), ... ,colonnaN (DESC)]"
...
%>

Nella formula appena vista, trovate una nuova parola chiave: DESC. Inserendola crea l'ordinamento in modo decrescente (dal più grande al più piccolo).

Secondo me questo metodo è comodo a livello di scrittura di codice, ma è consigliato da parte mia effettuare l'ordinamento direttamente nella stringa sql durante la creazione del recordSet:

<%
...
' Stringa Sql per la creazione del RecordSet
sql = "SELECT * FROM canzoni ORDER BY deejay
ASC, durata DESC"
...
%>

Se si utilizza la stringa sql appena proposta, è inutile usare rs.sort proposto in precedenza in quanto il lavoro è già stato svolto in fase di creazione del RecordSet. Se si utilizzasse ugualmente rs.sort, non verrà generato un errore ma, si otterrà un calo di prestazioni e aumento di tempo di esecuzione dello script in quanto deve impiegare risorse e tempo per ordinare un qualcosa di già ordinato. Ultima nota sulla stringa appena proposta è la presenza del termina ASC. Questa parola chiave effettuando il lavoro opposto di DESC, ordina i valori in ordine crescente (dal più piccolo al più grande). Se viene omesso il metodo di ordinamento (ASC o DESC) verrà utilizzato di default ASC.

Nella pagina successiva, troveremo l'ultimo metodo che analizzeremo dell'oggetto RecordSet.

Ti consigliamo anche