Dati gerarchici con ADO Data Shaping 1/2

2 pagine in totale: <<Indietro 1 [2]

Accesso ai recordset CHILD

Osservando l'esempio del precedente paragrafo, recuperare informazioni sul PARENT di una relazione è semplice come usare un recordset ADO, ma come recuperare i dati contenuti nelle relazioni CHILD ?

Fortunatamente è più semplice che apprendere la sintassi di Data Shaping; è necessario creare un nuovo recordset ed assegnare a quest'ultimo la proprietà VALUE del campo CHILD.

Facendo riferimento al nostro esempio, per accedere ai dati del recordset CHILD con alias DETTAGLI, dovremmo usare:

set rsDettagli=rsDS("DETTAGLI").value

dove

rsDettagli
è il recordset che conterrà i dati CHILD e
rsDS
è il recordset risultato della query DataShape.

Nel paragrafo successivo useremo questa tecnica per la costruzione di una tabella immagine del recordset gerarchico.

Osserveremo in questo paragrafo come utilizzare i recordset gerarchici nalle pagine ASP, servendoci naturalmente di ADO. Con semplici modifiche è possibile utilizzare lo stesso codice per applicazioni Visual Basic.

Nei file allegati troverete il file MS Access 97 denominato " DATASHAPE.MDB ", con il quale eseguire le vostre prove, nonché la pagina ASP " SHAPE.ASP " di seguito illustrata.

La sequenza delle operazioni necessarie è la seguente:

  • Creazione di un Recordset ADO
  • Creazione della stringa di connessione con Provider e Data Provider
  • Esecuzione della query Data Shape
  • Recupero dei dati CHILD

Ecco il codice completo per la creazione di una tabella virtualmente "gerarchica":

<%
response.buffer=true
response.expires=0

Dim rsOrdini
Dim rsArticoli

start=timer
'Creazione recordset PARENT Ordini
set rsOrdini=server.createobject("adodb.recordset")

'Percorso del database
dbPath=server.mappath("datashape.mdb")

'Stringa di connessione al Provider e Data Provider
rsOrdini.activeconnection="Provider=MSDataShape;Data Provider=Microsoft.Jet.Oledb.3.51;data source=" & dbPath

sqlShape="SHAPE {SELECT CODICE FROM ORDINI} AS ORDINI " & _
  "APPEND ({SELECT ID_ORDINE,DESCRIZIONE,QTA,PREZZO " & _
"FROM DETTAGLIO_ORDINI} AS DETTAGLI " & _
  "RELATE CODICE TO ID_ORDINE)"
 
'Apertura del Recordset Gerarchico
rsOrdini.open sqlShape

%>
<TABLE WIDTH=600 BORDER=1 cellspacing=0 cellpadding=0>
<TR>
<TD>ORDINE</TD><TD>DESCRIZIONE</TD><TD>QTA</TD><TD>PREZZO</TD>
</TR>
<%

with rsOrdini

'Loop fino alla fine degli ordini
while not .eof

'Intestazione nuovo ordine
TR_Parent="<TR><TD>" & .fields(0) & "</TD><TD COLSPAN=3 ALIGN=CENTER><B>DATI CHILD</B></TD></TR>" & chr(13)
 
'Creo il RS per il recupero dei dettagli
set rsDettagli=.fields("DETTAGLI").value
 
with rsDettagli
 
  while not .eof
 
  'Righe di dettagli per l'ordine corrente
TR_Children="<TR><TD>&nbsp;</TD><TD>" & .fields(1) & "</TD><TD>"
& .fields(2) & "</TD><TD>" & formatcurrency(.fields(3)) & "</TD></TR>"
  response.write TR_Children 
  .movenext
  wend
 
  end with
 
  response.write TR_Parent
  TR_Children=""
 
  .movenext
 
wend

end with

rsOrdini.close
set rsOrdini=nothing

%>
</TABLE><BR><BR>
Tempo di esecuzione: <%=timer-start%>

Benefici e costi di Data Shape

Naturalmente è lecito chiedersi quali siano i vantaggi del Data Shaping e quali i costi per ottenerli.

I recordset gerarchici hanno un basso impatto sulla rete, specialmente quando usati su DB Client/Server (Sql Server, Oracle, Sybase, ecc.), per i motivi che abbiamo illustrato nei precedenti paragrafi. Nonostante ciò, essendo necessario effettuare il fetching (recupero) dei record su base tabella, inevitabilmente viene introdotto un certo ritardo rispetto alle semplici " SELECT?JOIN ".

Ritengo comunque che il vero vantaggio di tale tecnica sia da ricercare nel nuovo concetto di dati strutturati secondo legami flessibili e potenti, che fornisce all'utente la libertà di concepire i risultati come " orientati alla realtà ".

2 pagine in totale: <<Indietro 1 [2]

Attenzione: Questo articolo contiene un allegato

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.


TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC