Newsgroup: it.comp.www.asp
Titolo: collection di collection

Ciao a tutti, non sapevo dare un Oggetto addatto a questa domanda, spero di
non avere sparato troppo fuori bersaglio :-)
Il mio problema č:
id      name      xtra
1       pippo     nero
2       pipp       nero
3       pip         bianco
4      pi            bianco
Come posso mettere tutti i name che ha xtra "nero" in una lista con il
titolo nero e i name con xtra bianco in un altra... ecc ecc?
Cioč:
Nero
Pippo
Pipp
Bianco
pip
pi
Grazie in anticipo. /Nick

3 domande:
1) ma questi id,name e xtra cosa sono, record di una tabella o oggetti?
2) con "una lista" intendi una combobox?
3) se la 1) è un database: che db usi? (con sql server c'è il datashape
fatto proprio per questo, però non lo ho mai provato con access2000)

nik...@softsia.it
 scrive...

Mah... se tali dati sono frutto di una query al db, si potrebbe anche 
farla "alla semplice"...
sql = "SELECT name, xtra FROM tabella ORDER BY xtra DESC"
apri rs...
while not rs.eof
  xtra = rs("xtra")
  if pxtra <> xtra then response.write(xtra & "<br>")
  response.write(rs("name") & "<br>")
  pxtra = xtra
rs.movenext
wend
....


Forse mi sono spiegato troppo male. Riprovo
Ho un database Access di un menů di ristorante. Piů o meno costruito
(veramente le
sotto categorie (cat1 e cat2) sono in un'altra tabella, ma...) come segue:
id   prodotto     cat1             cat2
1    prod1         antipasto      mare
2    prod2         antipasto      mare
3    prod3         antipasto      mare
4    prod4         antipasto      montagna
5    prod5         antipasto      montagna
6    prod6         antipasto      montagna
ecc
ecc
ecc
Come posso fare una funzione che ragruppa tutti i antipasti sotto un titolo
mare ed uno sotto montagna?
------------------------------------------------------
<%
 SQL="SELECT * FROM tabel1 where cat1='antipasto'"
 Set rs = db.Execute(SQL)
%>
Antipasti<br>
<%
 If Not rs.EOF Then
 rs.Movefirst
 Do until rs.EOF
%>
<%
 if rs.fields("cat2")>"" then
 SQL2="SELECT * FROM tabel2 where id="& rs.fields("cat2")
 Set rs2 = db.Execute(SQL2)
 End If
%>
<%= rs2.fields("product") %> - <%= rs.fields("product") %><br>
<%
rs.MoveNext
loop
End If
%>
-------------------------------------------------------
Questo mi da il risultato:
Antipasti
mare - prod1
mare - prod2
ecc
ma come faccio per ragruppare tutti i mare per metterle sotto il titolo
"mare"? Naturalmente il database contiene tanti piatti e a volte le cat2
sono fino
a 6.

 wend
Si, ma in mio caso ho bisogno di una cosa un po' più "dinamico". Il db
access contiene prodotti/name con fino a 6 sotto categorie (xtra). Allora
per potere ragruppare questi dati mi serve una funzione che lo fa. Ho
pensato di utilizzare un Array, ma veramente non so come si fa o se è
stupido farlo oppure se mi risolve il problema o no. Va bene ho dei libri,
ma voi esperti sicuramente avete già avuto questo tipo di problema e non
voglio mettermi sulle strade sbagliate.
Se potete aiutarmi sarò contentissimo. :-) /Nick

La strada più immediata è quella segnalata da rozilipo.
Come dicevo, come alternativa esiste il data shape che è nato proprio per
questi problemi; devi studiarti un attimo la sintassi, ma i risultati sono
ottimi (e diminuisci pure il traffico di rete).
Cerca in google, io mi ero salvato questo perché parla di shape multipli
(Che non servono nel tuo caso):
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q189657

nik...@softsia.it
 scrive...

La funzioncina che ho scritto io funziona con qualsiasi numero di 
sottocategorie... confronta quella del rs attuale con quella 
precedente... e se è diversa, allora te la scrive