Modifica a runtime di un report rdlc

giovedì 26 ottobre 2006 - 16.59

teologoeretico Profilo | Newbie

Ho un problema con i Report rdlc di MSSqlServer 2005... ho notato che NON si possono modificare a runtime. Spero che qualcuno mi contraddica :)

Mi spiego: in un'applicazione web, passo un valore tramite querystring ad un'altra pagina aspx che contiene un Reportviewer.

Userò questo valore come parametro nell'ObjectDataSource collegato al mio Report, per richiamare i dati che mi servono tramite metodo opportuno dell'ObjectDataSource stesso.

Contemporaneamente però mi piacerebbe scrivere tale valore che ottengo da querystring, in una textbox del report contenuto nel mio ReportViewer... ecco, qui cominciano gli intoppi.

Mentre mi pare di ricordare che Crystal Report mettesse a disposizione un campo proprio per memorizzare i parametri che vengono da querystring o da altra provenienza, non ho trovato un oggetto analogo all'interno dei report RDLC.

Quindi se, ad esempio, volessi scrivere nell'header di suddetto report una cosa del tipo : "RIEPILOGO ANNO 2005", dove il valore "2005" mi arriva da querystring... scopro che non posso farlo, se non eventualmente manipolando a runtime il Report Definition (ovvero la sua struttura XML), tramite XPath...

Qualcuno ha suggerimenti?
"All I want is a Dataset..."

freeteo Profilo | Guru

>Ho un problema con i Report rdlc di MSSqlServer 2005... ho notato
>che NON si possono modificare a runtime. Spero che qualcuno mi
>contraddica :)
quello no, nemmeno in Crystal, a meno di alcune cose o alcuni trucchi come usare i campi formula o appunto campi parametri (questi ci sono anche in sqlreporting)


>Mentre mi pare di ricordare che Crystal Report mettesse a disposizione
>un campo proprio per memorizzare i parametri che vengono da querystring
>o da altra provenienza, non ho trovato un oggetto analogo all'interno
>dei report RDLC.
apri il report a design, vai sul men "report->report parameters" e li dentro definisci il parametro.
Nel report lo usi impostando ad esempio la "expression" di 1a textbox ed eguagliandola al parametro.
Poi da codice lo inizializzi con 1codice tipo questo:
.... LocalReport mioreport = ReportViewer1.LocalReport; mioreport.ReportPath = MapPath("Report.rdlc"); mioreport.DataSources.Add(new ReportDataSource("mioDataSet", zDt)); ... List<ReportParameter> mioArr = new List<ReportParameter>(); mioArr.Add(new ReportParameter("mioparametro", "ciao")); mioreport.SetParameters(mioArr); ....
>Quindi se, ad esempio, volessi scrivere nell'header di suddetto
>report una cosa del tipo : "RIEPILOGO ANNO 2005", dove il valore
>"2005" mi arriva da querystring... scopro che non posso farlo,
>se non eventualmente manipolando a runtime il Report Definition
>(ovvero la sua struttura XML), tramite XPath...
modificarlo via xml è 1po dura, ma è possibile perche' microsoft da pubblica la struttura dell'xml che da vita ad un report, basta che cerchi sul sito microsft nell'area reporting services mricordo che c'era 1pdf disponibile per il download


ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

teologoeretico Profilo | Newbie

>LocalReport mioreport = ReportViewer1.LocalReport;
>mioreport.ReportPath = MapPath("Report.rdlc");
>mioreport.DataSources.Add(new ReportDataSource("mioDataSet",
>zDt));
>
>...
>
>List<ReportParameter> mioArr = new List<ReportParameter>();
>mioArr.Add(new ReportParameter("mioparametro", "ciao"));
>mioreport.SetParameters(mioArr);

Ti ringrazio per il suggerimento, però sembra non funzionare. Probabilmente perchè uso VB.NET e forse ho sbagliato nella "traduzione"...

Nell'evento Page_Load, ho scritto una cosa del tipo:

Dim par1 As ReportParameter = New ReportParameter("par1", "Ciao!")
Dim par2 As ReportParameter = New ReportParameter("par2", "Ari-Ciao!")
ReportViewer1.LocalReport.SetParameters(New ReportParameter() {par1, par2})

I parametri par1 e par2 li ho precedentemente dichiarati, in fase di design, nel mio report come tu mi hai detto e il loro valore di default è 0. Una textbox del report ne richiama il valore tramite la funzione

=Parameters!par1.Value & " - " & Parameters!par2.Value

Quando mando in esecuzione il programma, la textbox mi visualizza il valore di default 0 e non quello che gli ho passato tramite il metodo SetParameters() del report...

Ho questa impressione:
In fase di design del report, ho definito i parametri.
Però, poi, quando gli passo i valori da codice, sto creando nuovi parametri e non sto cambiando il valore di quelli già esistenti...

Potrebbe essere questo il motivo ?

Comunque grazie per i consigli... sono stati uno spunto in più di riflessione

"All I want is a Dataset..."

freeteo Profilo | Guru

ciao ti ho allegato 1o zip con 1a pagina di esempio e 1 report di esempio scollegato da tutto, che visualizza solo il parametro.
Prova a darci un'occhiata...
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

teologoeretico Profilo | Newbie

>ciao ti ho allegato 1o zip con 1a pagina di esempio e 1 report
>di esempio scollegato da tutto, che visualizza solo il parametro.
>Prova a darci un'occhiata...
>ciao.
>
>Matteo Raumer
>[MCAD .net]
>http://blogs.dotnethell.it/freeteo


Sei un grande...Ho scaricato il tuo allegato e funziona perfettamente... grazie... Questo .NET Framework mi gusta sempre di più

Mi si è aperto un nuovo mondo di possibilità

In effetti il problema è che passavo il nome sbagliato di variabile, ma se tu non mi avessi mandato l'esempio semplice, semplice, non me ne sarei mai accorto!
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5