Newsgroup: it.comp.appl.access
Titolo: Una curiosità sul treeview

Cari amici, 
č mia abitudine cercare di rendere le applicazioni da me sviluppate
molto curate da un punto di vista estetico per cui č continua, da parte
mia, la ricerca di soluzioni che possano personalizzarle notevolmente.
Ho pensato molte volte al "benedetto" TreeView ma, data la complessa e
particolare tecnica che richiede il suo inserimento, ho sempre desistito
considerandolo uno di quegli strumenti ad "alto rischio" per multiple
installazioni.
Andando sull'archivio storico del sito comune ho trovato una soluzione
alternativa al treeview per una visualizzazione gerarchica di dati
proposta da Luciano (DOC) nel lontano 6 febbraio 2001. Ho provato a
realizzare quello che il buon Luciano ha scritto ma con risultati
negativi. L'ideale sarebbe che qualcuno, che abbia seguito quel
consiglio, mi invii un database ridotto ai minimi termini in cui sia
chiarito praticamente la tecnica proposta o in alternativa mi chiarisca
ulteriormente il processo.
Al fine di rendere piů chiaro tutto il discorso, ripropongo la mail
postata da Luciano (nella parte che interessa l'argomento).
Un saluto a tutti.  Lino
---------------------------------------------------------------------
Hai due tabelle, T_padri e T_figli e vuoi sulle medesima sottomaschere
vedere l'elenco dei soli padri oppure l'elenco dei figli di ciascun
padre.
Fai due query, una con i padri e una con i figli ordinati per padre.
Poi al click su un record della sottomaschere cambi l'origine della
stessa alternativamente. In questo modo hai i due recordset, esploso e
compresso, a seconda delle esigenze.
Cosi' come te l'ho detto e' un po' rozzo: ad esempio viene esploso non
solo il record che hai cliccato ma tutto il recordset ed il nome del
padre (amen!:-) viene ripetuto n volte per quanti sono i figli.
Volendo si puo' fare di meglio: ad esempio recuperare l'id del padre al
click sul record ed esplodere solo quello usando una query di unione.
Mi spiego: fai una query che ti dai i figli solo di un determinato padre
e poi la unisci a quella dei padri non esplosi decurtati del  padre che
hai esploso.
Sei hai piu' di due livelli, come nel tuo caso, devi parametrizzare la
faccenda e ripetere il giochetto a scaletta.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

negativi.
Vediamo se ricordo.... a suo tempo  alla fine buttai tutto via perche' il
cliente
mi chiese una visualizzazione completamente diversa percio' dovrei cercare
fra i backup di un anno fa...praticamente una fatica sovrumana!:-)
Mi rinfresco la memoria con il mio vecchio post....
Dunque, fai le due query:
Q_padri (SELECT padre FROM T_padri ORDER BY padre)
Q_figli(SELECT figlio  FROM T_figli ORDER BY padre)
Ovviamente le tabelle sono relazionate!
Fai una maschera con una sottomaschera la cui origine e' Q_padri.
Al click sul record cambi il source della sottomaschera e gli dai Q_figli.
2 problemi:
- esplodi tutti record e non solo quello cliccato.
- in Q_figli hai il padre ripetuto n volte
Facciamo un passo avanti: al click anziche Q_figli gli passi questo SQL:
SELECT distinct  T_padri.padre, "" as figlio
FROM T_padri
WHERE (((T_padri.id)<>1))
ORDER BY T_padri.padre
UNION SELECT distinct T_padri.padre, T_figli.figlio as figlio
FROM T_padri INNER JOIN T_figli ON T_padri.id = T_figli.idpadre
WHERE (((T_padri.id)=1))
ORDER BY T_padri.padre;
Succede che nella prima query  prendi i padri che non prendi con il filgio
nella seconda. Quindi abbiamo esploso solo il padre cliccato. Rimane da non
ripetere il nome del padre n volte quanti sono i figli.
Al momento non ricordo come intendessi fare, ma giocando con UNION credo si
possa in qualche modo. Quello che ottieni fino qui e' comuqnue decente e
presentabile.
Tieni presente che quello cui volevo ispirarmi non era tanto il
treeview quanto la hierarchical flex grid, un conrollo fichissimo che pero'
e' licenziato con VB e credo solo in versione ADO.
Saluti.
Luciano