Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Trasformare una relazione PADRE-FIGLIO ricorsiva in una relazione linerare (VBA o SQL?)

241 views
Skip to first unread message

marcop

unread,
Oct 5, 2009, 6:02:36 PM10/5/09
to
Un suggerimento per qualche riga di codice VBA o un istruzione SQL per
"declicare" una relazione PADRE-FIGLIO ricorsiva memorizzata in
tabella in una relazione più leggilile ed ordinata, lineare.

In pratica… avrei una tabella con delle informazioni di relazione
PADRE-FIGLIO (+campo di ordinamento) del genere:

Campo1 Campo2 Descrizione Ordine
1 0 Libro 1
21 1 Sezione Y 2
22 1 Sezione X 1
23 1 Sezione Z 3
31 21 Capitolo B 2
32 21 Capitolo A 1
33 22 Capitolo A 1
36 23 Capitolo C 1

dove nel Campo 2 vengono messi i riferimenti del campo 1 per ottenere
il "padre" e nel campo Ordine vengono messi i numeri per ordinare
eventuali figli al medesimo livello.

e... data questa tabella... Vorrei ottenere, in automatico, un
qualcosa del genere:

| Libro
| |- Sezione X
| | |- Capitolo A
| | |- Capitolo B
| |- Sezione Y
| | |- Capitolo A
| |- Sezione Z
| | |- Capitolo C

Qualche illuminante suggerimento?
grazie... MARCO

Carlo Costarella

unread,
Oct 6, 2009, 1:27:28 AM10/6/09
to

"marcop" <mper...@gmail.com> ha scritto nel messaggio
news:da81522e-ff87-4245...@o13g2000vbl.googlegroups.com...

Un suggerimento per qualche riga di codice VBA o un istruzione SQL per
"declicare" una relazione PADRE-FIGLIO ricorsiva memorizzata in
tabella in una relazione pi� leggilile ed ordinata, lineare.

--------------------------------------------------

Io rifarei la struttura delle tabelle.
Tabella Libro con Nome, Autore, descrizione, ISBN, ecc.
Tabella Sezioni con IDLibro e IDSezione
Tabella Capitoli con IDLibro, IDSezione e IDCapitolo
Aggiungerei inoltre una tabella Autori e/o Editori

Ciao, Carlo


Marco

unread,
Oct 6, 2009, 5:39:45 AM10/6/09
to
On 6 Ott, 07:27, "Carlo Costarella" <carlocoslib...@libero.it> wrote:
> "marcop" <mpern...@gmail.com> ha scritto nel messaggionews:da81522e-ff87-4245...@o13g2000vbl.googlegroups.com...

> Un suggerimento per qualche riga di codice VBA o un istruzione SQL per
> "declicare" una relazione PADRE-FIGLIO ricorsiva memorizzata in
> tabella in una relazione più leggilile ed ordinata, lineare.

Grazie Carlo del suggerimento,
ma purtroppo, non posso... il DB è strutturato in quel modo e posso
solo interrogarlo...

altre idee? grazieee
Ciao, Marco

ciroteo

unread,
Oct 6, 2009, 6:24:00 AM10/6/09
to

Se metti nella tabella un campo che identifica il livello di rientro e
gli metti un numero livello 1 - 2 - 3 ecc..
con un iif o con una funzione apposita controlli il livello e
concateni il numero di "|" tipo:

se livello 1 allora concateni 1 volta la " | " al testo e via di
seguito.


Rispettando l'ordinamento avrai una visione ad albero più chiara.

Sono un attimo di corsa se hai bisogno riposta che ti posto l'esempio.

Marco

unread,
Oct 8, 2009, 8:17:20 AM10/8/09
to

Ok... grazie per il suggerimento... così potrei risolvere il problema
di visualizzazione...
MA MI RESTA il problema di come ordinare correttamente i vari record
secondo la relazione padre-figlio..

in breve... non è detto che i record siano ordinati...

esempio:

Campo1 Campo2 Descrizione Ordine
1 0 Libro 1
21 1 Sezione Y 2

32 21 Capitolo A 1

22 1 Sezione X 1

36 23 Capitolo C 1

23 1 Sezione Z 3
31 21 Capitolo B 2

33 22 Capitolo A 1

occorre quindi creare una procedura che mi vada ricorsivamente a
ordinare la relazione padre-figlio e poi l'ordine all'interno dei
figli...? come fare?

grazie di ogni suggerimento...
marco

Marco

unread,
Oct 8, 2009, 12:14:27 PM10/8/09
to

HO RISOLTOOOO... con un bel "Microsoft Treeview" Activex Control >>>
fa tutto lui... sfruttando la relazione padre-figlio !!!

Fantastico... forse molto lo conoscevano già...
ma io l'ho scoperto (purtroppo) solo ora (in caso di necessità!)

Una bella guida a 6 puntate, la trovate qua:
http://mymsaccessblog.blogspot.com/2008/02/my-treeview-project-episode-1-hello.html

spero che possa essere utile ad altri...
ciao a tutti, Marco

0 new messages