ok, pero cual es el problema.
Básicamente haces una consulta con inner join y agrupados por empresas:
Código SQL
[-]
select s.*, e.*
from Socios S inner join Empresa E
on s.codigoEmpresa = E.CodigoEmpresa
order by E.CodigoEmpresa
Así ya tienes unidas las dos tablas, cada fila contiene los datos del socio y de la empresa asociada.
¿Has decidido algún generador de informes? (quickReport, fastReport, Report Manager...)
Según el que quieras, tiene matices en la implementación.
Saludos