Recordset gerarchici con ADO Data Shaping

di Daniele Bochicchio, in Classic ASP, Database, Coding,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

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