Tb puedes hacerte una impresion por Crystal Reports, una vez tienes generado el archivo rpt, cargas el ds
dim informe as New ReportDocument()
...
adapter.fill(ds,"autores")
adapter.fill(ds,"libros")
'Cargase el fichero del Crystal Reports
Informe.Load("C:\ruta\archivo.rpt")
Informe.SetDataSource(ds)
CrystalReportViewer.ReportSource=Informe
------------------------------=------------------------------------------------------------------
Pruebalo y me comentas, vale?