|
Una volta connessi al nostro database (vedi
lezione precedente per maggiori informazioni) siamo in grado di richiedere ad esso i dati che ci interessano. Prima cosa da fare è definire la query che vogliamo eseguire. Diciamo che vogliamo vedere tutte le relazioni esistenti fra i record delle due tabelle, la query risulterebbe la seguente:
|
Select * from Tabella1, Tabella2 Where Tabella1.ID = Tabella2.Tabella1_ID |
Per poter passare tale richiesta al database dobbiamo creare un oggetto
recordset, abbinarlo alla connessione creata e dargli la query da eseguire. Di ritorno tale oggetto ci restituirà tutti i record da noi richiesti. Tali record saranno accessibili uno per uno e un campo alla volta.
<%
Dim oConn
Dim oRs
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" &
Server.MapPath("cartella/nomedb.mdb")
OConn.Open
Set oRs = Server.CreateObject("ADODB.Recordset")
oRs.ActiveConnection = oConn
oRs.Execute "Select * from Tabella1, Tabella2 Where Tabella1.ID = Tabella2.Tabella1_ID"
if not oRS.EOF and not ors.BOF then
while not oRs.EOF
%>
<%
oRs.moveNext
wend
end if
oRs.Close
Set oRS = nothing
oConn.closeSet
oConn = nothing
%> |
Listato 12
Il metodo BOF controlla che il recordset non sia all'inizio del suo contenuto, mentre il metodo EOF controlla che non sia alla fine. Se entrambe le condizioni si verifichino insieme, significa che il recordset è vuoto e che non c'è nessun dato da mostrare. In caso contrario la pagina scriverà nella tabella un record alla volta, utilizzando il metodo movenext per spostarsi da un record all'altro.
Per poter accedere ad un campo del recordset è sufficiente richiamare la collezione fields e passare il nome del campo a cui siamo interessati. Esempio:
oRs.Fields("nomefield")
In alternativa si può utilizzare la posizione del campo anziché il suo nome. Tale procedura è leggermente più veloce, ma creerebbe problemi quando la posizione dei campi è modificata nella query:
oRs.Fields(1).
Nella parte finale dello script i due oggetti, connessione e recordset, sono chiusi e
dislocati manualmente (ovvero la parte di memoria RAM da loro utilizzata viene liberata e rimessa a disposizione). Tali azioni sarebbero in ogni modo eseguite da ASP stesso alla fine dell'esecuzione della pagina. È però buona regola provvedere di persona a tali azioni siccome è abbastanza importante liberare le risorse di memoria quanto prima.
Negli esercizi qui riportati tali necessità non sono ben visibili, ma vi assicuro che, lavorando in grandi applicazioni, la necessità di avere una maggior quantità di risorse possibili il prima possibile è molto viva.
Lezione
successiva =>
Torna
all'indice!
|