Originariamente inviato da Shores
La soluzione è perfetta, semplicemente ti basterà fare in modo che la query iniziale ti restituisca la tabella invece che basata ed ordinata per codice di categoria, per descrizione di categoria, poi farai un ciclo fatto così:

precedente=""
Leggi riga dal recordset.
if categoria=precedente then
stampa una virgola e il nome del prodotto
else
stampa un acapo, il nome della categoria, uno spazio e il nome del prodotto
precedente =categoriaattuale
endif
ciclo alla prossima riga del recordset.

Tutto chiaro?
si, infatti era proprio quello che avevo in mente
pensavo ci fosse un modo più pulito ma non credo ce ne siano
grazie