Ciao,
ogni report che hai (RptFattura, RptAcconti, RptAltro etc..) sono cmq tutti oggetti della classe "ReportDocument" che è la classe di Crystal che è base di ogni report.
Il fatto di farli dentro a Visual Studio fa si che vengano create delle classi (che se vai a fare tastoDX->Goto Definition lo vedi) ereditano da ReportDocument, e che ti danno delle proprietà in più che sono "tipizzate" per quel tipo di report che hai disegnato appunto.
Perciò ti basta non istanziarlo ad "object" ma a "ReportDocument" (del namespace di CrystalDecisions.CrystalReports.Engine)
Ma quello che faccio io di solito, è gestire il tuo caso di caricare diversi report, con un codice di questo tipo che è equivalente al tuo:
Dim tabella as new DataTable()
...riempi i dati nella tabella...
Dim mioreport as new ReportDocument()
mioreport.Load("c:\...\mioreport.rpt")
mioreport.SetDataSource (tabella)
CrystalReportViewer1.ReportSource = mioreport
dove come puoi vedere il report viene caricato direttamente dal disco, questo perchè se a qualche cliente gli personalizzi qualcosa (vedi loghi etc...) il programma va sempre bene, senza dover ricompilare.
Chiaramente però i dati gli passi devono essere quelli che si aspetta, come struttura e tipologia di campi...
Ciao.
Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo