Tutte le volte che si esegue un'interrogazione su di un database per visualizzarne i record si incappa in una serie a volte infinita di Response.Write per ogni campo che è contenuto nel record.
ASP questa volta ci viene incontro con un sistema per velocizzare il tutto e risparmiare tempo e noiose ripetizioni nelle righe di codice
Tutti i programmatori ASP sicuramente sono capitati nella situazione di dover visualizzare il contenuto di una tabella o di una qualsiasi interrogazione (QUERY) di un database, chiaramente come la teoria ci insegna il sistema è quello di generare la nostra tabella e andare ad inserire nelle varie celle i campi che ci interessano.
Insomma un qualcosa tipo:
<TABLE>
<%
Do While not Rs.EOF
%>
<TR>
<TD>
<%Response.Write
Rs("campo1")%>
</TD>
<TD>
<%Response.Write
Rs("campo2")%>
</TD>
<TD>
<%Response.Write
Rs("campo3")%>
</TD>
..........
</TR>
<%
Rs.MoveNext
Loop
%>
</TABLE>
Questo sistema, se il numero di dati da visualizzare sale, causa sicuramente un calo in termini di prestazioni dello script, visto e considerato che ogni Response.Write deve essere processato dal server e riconsegnato in forma di codice html.
Se esistesse un metodo per avere in una volta sola all'interno di una variabile, tutta la serie di dati da visualizzare e, di conseguenza avere un unico Response.Write da processare sicuramente il tutto risulterebbe molto più fluido e leggero senza considerare il risparmio in termini di righe di codice.
Ed è proprio a questo punto che ASP ci viene incontro: con il metodo GetString.
La sintassi corretta di GetString (tenete conto che tutti i parametri sono opzionali) è la seguente:
Stringa = recordset.GetString(Formatostringa, NumeroRighe, colonna, riga, nulla)
Quindi, per riempire una tabella con i risultati di un recordset, basta preoccuparsi dei pochi parametri riportati qui sotto:
colonna | indica con che codice html separiamo le colonne l'una dall'altra |
riga | indica con che codice html passiamo da un risultato a quello successivo |
nulla | indica con che codice html indichiamo una colonna vuota |
Nell'esempio sopra (quello col do while...loop) ogni colonna è separata dalla successiva con <TD>...</TD>, e ogni risultato e delimitato tra <TR>...</TR>.
Quindi lo stesso risultato tramite il metodo GetString sarà qualcosa di simile a questo:
<%
' Chiaramente deve essere effettuata la
'conessione al db, apertura del recordset e interrogazione db
'quindi.......
'Set Conn = Server.CreateObject("ADODB.Connection")
'Conn.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("percorso/database.mdb")
'Set Rs = Server.CreateObject("ADODB.Recordset")
'set Rs = Conn.Execute("SELECT * FROM nometabella ORDER BY cosavuoi ASC/DESC")
'qui invece vediamo come funziona il metodo
Dim stringa
stringa = Rs.GetString(,,"</td><td>","</td></tr><tr><td>"," ")
%>
<TABLE>
<TR>
<TD>
<%
'stampiamo il tutto in un colpo solo e....
Response.Write(stringa)
'finito !
%>
</TD>
</TR>
</TABLE>
strTab quindi conterrà tutti i dati del database, con l'ordine stabilito dalla nostra query e divisi tramite i parametri specificati.
Supponendo che la tabella che si ottiene sia un risultato simile:
Col1 | Col2 | Col3 | |
Rig | valore | valore | valore |
Rig | valore | valore | valore |
Rig | valore | valore | valore |
il codice risultante contenuto nella stringa quindi sarà:
<td>Rig</td><td>valore11</td><td>valore12</td><td>valore13</td></tr><tr><td>Rig</td><td>valore21</td>..