ciao,
io nella progettazione di un report mi baso su questi (miei) punti basilari
- sono visualizzatori complessi di una sorgente dati
- a design time imposto la struttura e l'aspetto ma i dati che uso per avere le anteprime in questa fase possono essere qualsiasi (mi è capitato anche di fare un database mdb di appoggio per agilita' di test)
- da codice gli passo la sorgente dati in 2 modi: con il metodo SetDataSource (gli passo io un datatable/collection con i dati da visualizzare) o impostando le LogonInfo(dico al report in quale database andare a prendersi i dati)
Nel tuo caso, se non ho capito male hai stessa struttura ma in tabelle diverse, quindi ti basta creare il report a designtime usandone una qualsiasi e poi applicare i 1 dei 2 metodi che ti dicevo prima.
Dopo aver fatto il report e posizionato i campi dove ti interessa, usi un codice di questo tipo:
1o metodo:
...
Dim tabella As New DataTable()
...
mioDataAdapter.Fill(tabella)
...
Dim mioreport as new ReportDocument()
mioreport.load("c:\..\..\crystalreport1.rpt")
mioreport .SetDataSource(tabella)
CrystalReportViewer1.ReportSource = mioreport
...
2o metodo:
...
Dim mioreport as new ReportDocument()
mioreport.load("c:\..\..\crystalreport1.rpt")
Dim logOnInfo As New TableLogOnInfo
logOnInfo = mioreport.Database.Tables.Item("Tabella").LogOnInfo
logOnInfo.ConnectionInfo.ServerName = "SERVER"
logOnInfo.ConnectionInfo.DatabaseName = "miodb"
logOnInfo.ConnectionInfo.UserID = "User"
logOnInfo.ConnectionInfo.Password = "pwd"
logOnInfo.TableName = Tabella"
mioreport.Database.Tables[0].ApplyLogOnInfo(logOnInfo)
CrystalReportViewer1.ReportSource = mioreport
CrystalReportViewer1.DataBind();
...
quale dei 2 usare? dipende dalle esigenze, se i dati ti serve caricarli in ado.net perche' devi cmq farlo in qualche altra parte del progetto allora sicuramente è da usare il primo, se invece vuoi fare a meno di scrivere codice ado.net per dati che useresti solo per il report allora anche il secondo va benissimo.
Per moli di dati clamorose, il secondo è piu' performante.
ciao.
Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo