Tu mismo lo has dicho tienes que hacer un reporte por grupos no es tan dificil como parece aqui te dejo un ejemplo tambien puedes descargarlo
desde este link.
Código:
Dim rs As New ADODB.Recordset
sSQL = "SHAPE {SELECT P.codprod,P.NomProd,P.CodCat,C.nomcat FROM Producto P INNER JOIN Categoria C ON P.codcat=C.codcat } AS LEVEL2 COMPUTE LEVEL2 BY 'CodCat','NomCat'"
Set rs = New ADODB.Recordset
rs.Open sSQL, Cn
Set DataReport1.DataSource = rs
DataReport1.Show