ciao,
quando aggiungi il collegamento al database del tuo report, gli puoi dire di avere diverse sorgenti dati, che daranno origine ad diverse tabelle nel report che andranno linkate tramite il campo (o i campi) comuni.
Quando poi vai a caricarlo da codice, puoi fare l'associazione delle tabelle al report, usando ado.net, ovvero caricandoti i vari DataTable con i dati e passandoli al report impostando il "SetDataSource" di ogni tabella effettivamente presente nel report, in questo modo:
DataTable Tab1 = new DataTable();
DataTable Tab2 = new DataTable();
...
primoDataAdapter.Fill(Tab1);...
altroDataAdapter.Fill(Tab2);
ReportDocument rpt = new ReportDocument();
rpt.Load(@"c:\...\CrystalReport1.rpt");
rpt.Database.Tables["primaTabella"].SetDataSource(Tab1);
rpt.Database.Tables["secondaTabella"].SetDataSource(Tab2);
...
cosi' facendo i "primoDataAdapter" e "altroDataAdapter" sono gli incaricati di caricare i dati da sorgenti diverse, poi quando ce li hai disponibili nelle DataTable, allora li setti alle rispettive tabelle vere e proprie del report...
ciao.
Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo