ReportViewer e file .rdlc escluso dall'eseguibile

martedì 27 febbraio 2007 - 11.07

kunio Profilo | Junior Member

Salve a tutti,
...molto probabilmente ciò che stò per chiedere è una stupidata da risolvere che richiede l'immissione di quelche parametro in Visual Studio vi espongo brevemente il mio problema.

Ho creato un progettino Windows Form in VB.net con Visual Studio 2005,...in tale finestra c'è l'oggetto reportViewer che permette di andare a vedere un Report locale (file .RDLC). Questo file quando viene compilato il programma, viene racchiuso nell'eseguibile. Ciò però è scomodo perchè in caso volessi andare a modificare il layout del report dovrei ricompilare tutto il progetto (finchè si parla di un progettino va bene, ma se si parla di un bel programmone...non è il massimo).

L'inclusione avvine perchè nelle proprietà del file Report1.rdlc vi è impostato Build Action = Embedded Resource.
Ho provato a settare tale proprietà a None, o Compile o Content...ovviamente anche nell'oggetto reportViewer nella proprietà LocalReport ReportPath ho inserito il percorso dove è allocato il mio file rdlc.

Lanciando l'eseguibile invece di farmi vedere il report correttamente mi segnala il seguente errore:

Errore nell'elaborazione locale del report.Non è stata specificata la definizione del report C:\Document and Settings\ecc\Report1.rdlc impossibile trovare il file C:\Document and Settings\ecc\Report1.rdlc

il path inserito è giusto...

nessun suggerimento???

Rigrazio per il tempo che avete dedicato per la lettura del mio problema ciao ciao

freeteo Profilo | Guru

ciao,
il tuo ragionamento di tenere il report sgnaciato dall'applicazione trova tutta la mia approvazione, lo consiglio sempre a tutti, tanto per poca velocita' in piu' ci si vincola in maniera clamorosa la prima volta che si va ad aggiornare l'applicativo e non si puo' gestire nessuna personalizzazione (cosa che ormai è richiesta quasi per tutte le stampe).

Quindi ti consiglio di usare 1po di codice per caricare il report a runtime, e visualizzarlo nella tua applicazione, lo trovi qui:
http://dotnethell.it/forum/messages.aspx?ThreadID=9659

in poche parole devi usare l'oggetto "LocalReport" e usando il Load per il file e il ReportDataSource per passargli la sorgente dati...

ps: dimenticavo, quando selezioni il report nell treeview della solution, (senza aprirlo) gli puoi settare la proprieta' "Copy to Output Dir->Always" cosi' quando compili il report viene distribuito nella stessa dir dell'applicazione...


ciao.

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

kunio Profilo | Junior Member

Ringrazio per la cortese risposta, non avevo visto il Topic che mi hai segnalato.
Alla fine mi hai consigliato di inserire questo codice
... LocalReport miorpt = ReportViewer1.LocalReport; miorpt .ReportPath = @"c:\..\..\Report.rdlc"; miorpt .DataSources.Add(new ReportDataSource("tabella", mioDataSetAdo)); ...

nel codice del reportViewer. Ringrazio molto cercherò le corrispettive istruzioni in Visual Basic .Net... solo che non trovo molta differenza da ciò che ho impostato precedentemente io.
Se nel ReportViewer setto la proprietà LocalReport.RecordPath= "c:\..." è equivalente alla riga di codice miorpt .ReportPath = @"c:\..\..\Report.rdlc"; (come dataSources io avevo utilizzato istanze di oggetti)

Una curiosità...Quando avevo inserito nel progetto il file .rdlc quardando le proprietà di questo alla proprietà Build Action potevo settare
None=cioè nessuna
Embedded Resource= risorsa che verrà inclusa nell'eseguibile
Compile e Content ...dei quali non ho una chiara idea cioè Compile credo che il file viene incluso in compilazione e content nn so

Da ieri mi è comparsa anche questa voce "BaseApplicationManifest" sto provando a cercare nella documentazione MSDN tutte queste proprietà ...ma a quanto pare sono così impedito che non riesco a trovarle (ci sono sicuramente)

kunio Profilo | Junior Member

Ho risolto,...grazie per l'aiuto,...mi rimane counque la curiosità della proprietà Build Action impostata BaseApplicationManifest...che cosa farà??? bohhhh?!?!

BiBi Profilo | Junior Member

Anche io ho fatto la stessa prova con una tabella semplice.
Il codice che ho inserito è il seguente:

Dim mioreport As LocalReport = rvStampa.LocalReport

mioreport.ReportPath = "C:\StpOfficina\rptProva.rdlc"
mioreport.DataSources.Add(New ReportDataSource("Articoli", ldsArt.Tables(0)))

Quando vado a lanciare la form, non mi stampa nulla, anche se il mio DataSet è pieno. Cosa ho sbagliato?

Ciao!
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