valore3="TAVOLI"
rsRecordSet2.Open "SELECT [COD.FAMIGLIA],[NOME PRODOTTO],First([Struttura: Archivio].[NOME PRODOTTO]) AS [PrimoDiNOME PRODOTTO] From [Struttura: Archivio] where UCase([CATEGORIA])='" & valore3 & "' GROUP BY [COD.FAMIGLIA], [CATEGORIA] order by [COD.FAMIGLIA]", Cn, adOpenStatic, adLockOptimistic

P.S. WHERE è molto più rapida di HAVING. Inoltre, se il campo di HAVING non è una chiave, diventa lentissima perchè scorre tutti i records.

P.S. 2 la Query non è key-sensitive, quindi ti fornisce sia maiuscole che minuscole.

Ciao !!