Caricamento Sub Report rdlc a runtime

venerdì 30 marzo 2012 - 10.16
Tag Elenco Tags  C#  |  .NET 3.5  |  Windows XP  |  SQL Server 2008 R2  |  SQL Reporting Services

ysdemarc Profilo | Expert

Ho un report rdlc composto da vari sub reports. A seconda di chi stampa il sottoreport dovrei caricare un sottoreport piuttosto che un'altro.

i sottoreport che andrebbero intercambiati hanno tutti la stessa fonte dati, ma cambiano solamente le colonne da visualizzare.

E' possibile dare anche il LocalPath del sub reports? O ci sta qualche altro modo per poter fare qualcosa del genere?
Vincenzo
Programmatore sbilenco

freeteo Profilo | Guru

Ciao,
esattamente quello che vuoi fare tu non so se sia possibile, diciamo che puoi usare il metodo "LoadSubreportDefinition(...)" dell'oggetto report principale.
Quindi qualcosa tipo:
report.LoadReportDefinition(...); report.DataSources.Add(new ReportDataSource("nomeDataSet", ... ); report.LoadSubreportDefinition("NomeSottoReport", ... );

Ti basta passare i parametri corretti e secondo me potrebbe funzionare, tanto lui non sa ancora quale sia il file, gli puoi dare tu lo stream che ti interessa...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

ysdemarc Profilo | Expert

ciao, innanzitutto ti ringrazio per la risposta.

Io avevo già provando vedendo il metodo a fare qualcosa del genere
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

successivamente, associo la basa dati e quant'altro, ma in aoutput ho sempre il report che ho inserito in progettazione.

Visto il tuo esempio ho provato allora a caricare anche il report principale con il LoadReportDefinition ed è andato tutto apposto.

Quindi c'è da specificare che
1. se vogliamo caricare a runtime un SubReport questo deve essere fatto mediante LoadSubreportDefinition
2. Il report principale e contenitore andrà caricato con LoadReportDefinition
3. Eventuali altri sotto reports dovreanno essere tutti caricati mediante LoadSubreportDefinition.

Funzionamento molto discutibile e macchinioso a dire il vero.
Bastava farlo in modo da caricare dinamicamente solo quello che si vuole e gli altri lasciarli stare com quelli fdi progettazione e non necessaiamente caricare il report principale come stream,invece a microsofts ci piace complicarci le cose.

Ciao

Vincenzo
Programmatore sbilenco

freeteo Profilo | Guru

>Quindi c'è da specificare che
>1. se vogliamo caricare a runtime un SubReport questo deve essere
>fatto mediante LoadSubreportDefinition
>2. Il report principale e contenitore andrà caricato con LoadReportDefinition
>3. Eventuali altri sotto reports dovreanno essere tutti caricati
>mediante LoadSubreportDefinition.
ok grazie che hai specificato la soluzione che hai trovato, potrebbe tornare utile anche ad altri.



>Funzionamento molto discutibile e macchinioso a dire il vero.
>Bastava farlo in modo da caricare dinamicamente solo quello che
>si vuole e gli altri lasciarli stare com quelli fdi progettazione
>e non necessaiamente caricare il report principale come stream,invece
>a microsofts ci piace complicarci le cose.
sì, diciamo che il motore di Reporting di Microsoft ha ancora parecchie "rigidità" che dal punto di vista dev spesso sono fastidiose...ma per quanto ho potuto vedere io sul campo è cmq un ottimo prodotto, soprattutto per la facilità di integrazione nell'applicazione e le ottime prestazioni in render dei dati.


Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5