Con ADO 2.1 è stato introdotto un sistema che permette di organizzare in maniera gerarchica i dati contenuti in un database.
Pensate ad un Join, con la differenza che ogni singolo riga del recordset è da intendere come il nodo padre di una serie di altri nodi, un po' come una directory ed i files in essa contenuti.
In questo esempio utilizzeremo questa tecnica per creare una lista di editori ed i libri pubblicati da ciascuno, ma può ovviamente essere riadattato agevolmente anche per altri scopi.
<% ' stringa di connessione strConn = "Provider=MSDataShape;" &_ "Data Provider=Microsoft.Jet.Oledb.4.0;" &_ "data source=" & Server.MapPath("prova.mdb") ' query SQL SQL = "SHAPE {SELECT IDEditore FROM Editori} AS Editori " &_ "APPEND ({SELECT IDEditore, Libro FROM LIBRI} " &_ "AS Libri RELATE IDEditore TO IDEditore)" ' apertura connessione - non cambia nulla set conn = Server.CreateObject("ADODB.Connection") conn.Open StrConn ' apertura recordset set rs = Server.CreateObject("ADODB.Recordset") rs.Open sql, conn Response.write "<dir>" ' visualizzo gli editori Do until rs.Eof Response.write "<li>" & rs("Editore") ' accesso al nodo figlio set rsLibro = rs("Libri").Value Response.write "<dir>" ' visualizzo tutti i libri Do until rsLibro.Eof Response.write "<li>" & rsLibro ("libro") rsLibro.MoveNext loop Response.write "</dir>" ' libero risorse rsLibro.Close set rsLibro = Nothing ' prossimo nodo padre rs.MoveNext Loop Response.write "</dir>" ' libero risorse rs.Close set rs = Nothing conn.Close set conn = Nothing %>
Le potenzialità di un approccio di questo tipo, come si vede, sono molte ed evitano di ripetere delle query in maniera consecutiva, riuscendo a gestire quindi dati di tipo gerarchico in una maniera più semplice e pulita.
Maggiori informazioni sul Data Shaping, con una sintassi del linguaggio da utilizzare per le query, sono disponibili su
https://www.aspitalia.com/articoli/db/datashaping.asp
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Accedere con ASP.NET ad un documento XML creato dall'oggetto recordset di ADO e ASP
- Richiamare programmaticamente le operazioni di aggiornamento, eliminazione e inserimento di FormView, DetailsView e GridView
- Aumentare la scalabilità di ASP.NET Core Web API con caching client side
- Visualizzare contenuti Fullscreen con HTML5
- Disabilitare un bottone in una pagina HTML pensando all'accessibilità
- Realizzare siti sicuri con ASP.NET Web Pages
- Focus dei tag input con HTML5
- Disponibile la beta di Silverlight 5
- Ricavare lo spazio occupato su disco dal nostro sito