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

Risparmiare tempo con GetString

Come evitare inutili ripetizioni di codice
Come evitare inutili ripetizioni di codice
Link copiato negli appunti

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>..

Ti consigliamo anche