Utilizzare file di report diversi a runtime: problemi

mercoledì 31 dicembre 2008 - 19.15

Ghitano Profilo | Newbie

Salve
dovrei utilizzare un report diverso a seconda del tipo di documento es:

dim rpt as object
select case TipoDoc
case Fattura
rpt = new RepFattura
case preventivo
rpt = new RepPreventivo
end select

tutto funziona
ma in esecuzione mi da un errore nella riga
rpt.setdatasource = dtDataTable


chiaramente non mi da errore se imposto dim rpt as RepFattura
si incavola se dichiaro la variabile rpt come object
credo si possa risolvere impostando la variabile oggetto come
tipo
dim rpt as new CrystalClasse.OggettoReport ?????

potete aiutarmi?

Ghitano BitBoys

freeteo Profilo | Guru

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

Ghitano Profilo | Newbie

Grazie freeteo
puntuale come sempre...
Ghitano BitBoys
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5