Newsgroup: it.comp.lang.visual-basic
Titolo: [!]Distinta base

 ciao, sgrenzo

 End Sub
Qui si conclude la procedura, se hai altri dubbi posta sul news e ti sarà
risposto, almeno spero 8-)
Ciao
VB


 Come detto ti rispondo sul newsgroup:
Bravo, Valter !  :-)
Ciao
Aldo

 VB
Ciao e grazie,
grenzo


Nel nostro esempio A ha tre figli, quindi quando apro il recordset con
parametro A, ottengo tre record (non esistono e non devono esistere record
con figlio=NULL):
Padre    Figlio
A            B
A            C
A            D
B invece non ha figli, Quindi quando apro il Recordset con parametro B
ottengo un recordset vuoto, cioè senza record.
Forse per rendere più chiare le cose conviene provare a seguire passo passo
la procedura.
Leggiamo la distinta di A:
Io passo A e 1 alla routine
La routine estrae tutti i record che hanno Padre=A, nel nostro caso
otteniamo:
Padre    Figlio
A            B
A            C
A            D
non essendo un recordset vuoto continuo leggendo riga per riga
Prima riga:scrivo nella casella di testo .1 (che rappresenta il livello) e B
poi richiamo la stessa procedura passandogli come parametri B e 1+1 per
controllare ed eventualmente scrivere la distinta di B, qui estraggo tutti i
record che hanno come padre B, il recordset risultante è vuoto (non esistono
record con padre=B, quindi esco dalla routine e ritorno alla routine
chiamata precedentemente e passo al secondo record (A     C), richiamo la
routine e otttengo un recordset con 3 Record:
Padre    Figlio
C            E
C            F
C            G
Anche qui esamino record per record
Scrivo nella casella di testo ..2 (a questo punto la variabile Livello vale
2) e E , richiamo la procedura Passandogli come parametro E e 2+1 etc.....
Quando ho finito di esaminare il record A   C ho finito di esaminare (si
dice esplodere) la struttura.
ps. In effetti si può usare SELECT Figlio al posto di SELECT * (è più
corretto e meno impegnativo per il sistema)
Ciao VB

 poi richiamo la stessa procedura passandogli come parametri B e 1+1 per
con l'istruzione: LeggiDistinta rec!Figlio, Livello + 1 ?
Ok, ho capito, quindi con il programma ottengo un bel mucchietto di record
che compongono i vari livelli della distinta suddivisi per livello, giusto??
da quanto ho capito dal tuo esempio esiste l'articolo A che ha 3 figli B,C,D
e poi tu analizzi 3 record che hanno come codice padre A. Ma questi record
non possono stare nella tabella articoli ( li' c'e solo 1 record A ) ma in
una tabella relazionata dove ad ogni figlio dell' articolo A corrisponde un
record con il codice_padre (che e' A)(Foreign Key?) ed il codice_figlio (
che e' diverso per ogni figlio ), giusto?
----
ciao, grenzo

 ha scritto nel messaggio
news:NkSY5.75240$hk4.2...@news.infostrada.it...



si' ok, pero' nelle condizoni reali la distinta base viene utilizzata per
gestire gli articoli figli che compongono, a vari livelli, un altro articolo
padre. Esiste, quindi, la tabella 'articoli' dove il singolo articolo (padre
o figlio ) corrisponde ad un record solo.
Se voglio avere piu' record ( come nel tuo esempio ) che si riferiscano ad
un articolo unico ( esempio codice A )devo avere per forza un'altra tabella
correlata. o no?
----
ciao, grenzo

 > per B C e D e così via, non servono altre tabelle correlate. Per capire


Ok,
ma l'allegato non lo ho ricevuto....
------
ciao e grazie, grenzo


 ha scritto nel messaggio
news:91a20s$4u2g$1...@stargate1.inet.it...
