Newsgroup: it.comp.www.asp
Titolo: estrarre gerarchia da campo testo

estrarre gerarchia da campo testo
Ho una tabella con i dati in questa forma
ID	NOME
1	A - B - C
2	D - E - F
3	H - I
...
il campo nome ha questo significato:
categoria di primo livello, - , categoria di secondo livello, - ,
categoria di terzo livello
la struttura _non_ posso cambiarla perche' e' alimentata da un
gestionale che non posso modificare.
E' possibile fare tre query:
la prima mi estrae le categorie di primo livello (A D H) 
a seconda mi estrae le categorie di secondo livello (B E I) 
la terza mi estrae le categorie di terzo livello (C F) 
ciascuna delle tre query alimineta un tag select
uso asp per leggere i dati del db generare il codice html
Spero che qualcuno mi illumini !
Ciao, grazie in anticipo,
Albe

Puoi fare così...
Fai una semplice SELECT che ti prende tutti i record in rsTemp
Quindi avrai:
Record 1: 1 ABC
Record 2: 2 DEF
.....
A questo punto puoi creare i tag <select> al volo o mettere i dati in una
matrice arrCat(n,m) e manipolarla poi.
Nel primo caso devi scorrerti tutti i record, verificando se è presente il
livello che stai esaminando e aggiungerlo alla <select>, poi ricominciare
tutto da capo per la seconda <select> e il secondo livello e così via.
Nel secondo caso invece scorri il recordset una sola volta.
Proviamo con il secondo caso, poi devi aggiustarti tu la sintassi.
arrTemp = rsTemp.GetRows(-1) ' #### Trasferisci il recordset in una matrice
temporanea ####
rsTemp.Close
Set rsTemp = Nothing
intCount = 0
While intCount <= Ubound(arrTemp,2)
    intCount2 = 1
    While intCount2 <= Len(arrTemp(1,intCount))
        arrCat(intCount,intCount2 -1) = Mid(arrTemp(1,intCount),intCount2,1)
    Wend
    intCount = intCount + 1
Wend
A questo punto ottieni una matrice così composta:
        (0)    (1)    (2)
(0)    A      B      C
(1)    D      E       F
....
Quindi basta che ti crei un ciclo per manipolare arrCat, che dura per tutta
la grandezza della seconda dimensione (livelli)
intCount3 = 0
While intCount3 <= Ubound(arrTemp,2)
Qui crei una select di livello intCount3 + 1
E all'interno un altro che ti scorre le righe
    intCount4 = 0
    While intCount4 <= <= Ubound(arrTemp,1)
Qui dentro aggiungi <option> alla select
Ciao
-- 
:: Massimiliano Mattei
:: Project Leader
:: EVA Group :: 
www.evagroup.net
:: Soluzioni extranet :: e-business :: corporate portal

In realtà potresti fare tutto nella prima parte, senza "travasare" l'array
del recordset nell'altro.
Avevo fatto questo esempio pensando di utilizzare rsTemp anzichè arrTemp (in
questo caso, il travaso è d'obbligo).
Ma avendo già il recordset in un array puoi fare tutto con una sola
"manipolazione".


eccellente soluzione tra oggi e lunedi' inizio a buttar giu' codice...
Visto che sei cosi' disponibile volevo chiederti (e siamo OT) quale
tecnica useresti per disegnare un parallelepipedo in una pagina html ?
Dobbiamo realizzare il disegno di una struttura metallica
(grigliato,molto semplice) partendo da quattro valori (per darti
un'idea 
http://www.euroslot-architecture.com/descriptiontechnique.htm
)
Non possiamo farlo in flash perche' non lo conosciamo cosi' a fondo
Esempio: 40x3 Maglia 11x44
40 altezza parallelepipedo
3 spessore
11 e 44 distanze dei parallelepipedi
i quattro valori vengono scelti dall'utente da delle select popolate
da db
Pensateci !
GRAZIE