Rporting services in pagina .NET con messaggio "A data source instance...

venerdì 30 maggio 2008 - 16.28

squilibrio Profilo | Expert

Ciao, è possibile non visualizzare questo messaggio


A data source instance has not been supplied for the data source 'Documento'.


che viene visualizzato prima di caricare un report....

Grazie

freeteo Profilo | Guru

ciao,
come dice il messaggio, il report ha impstata una DataSource (sorgente di dati) che prima di essere visualizzato nella pagina non ha ricevuto.
Tipicamente devi impostarla con un codice di questo tipo nel page_load:
... LocalReport miorpt = ReportViewer1.LocalReport; miorpt.ReportPath = MapPath("./mioReport.rdlc"); miorpt.DataSources.Add(new ReportDataSource("#nome#", miaDataTable)); ...

dove:
- #nome# = nel tuo caso dovrebbe essere "documento" o cmq la puoi vedere a report aperto, menu "report->data source"
- i dati vengono passati accedendo al db e rimepiendo "miadatatable" (se hai tableAdapters) o hai del codice che ti carica una datatable, ioppure va bene uguale (a mio avviso molto meglio) se è una collection Tipizzata

Chiaramente la struttura dei dati che passi al report, deve corrispondere alle colonne della datatable, o alle proprietà di ogni singolo oggetto della collection che gli passi, a seconda del tipo di dati che vai a farti tornare.

ciao.

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

squilibrio Profilo | Expert

Scusa ma non ho capito cosa sbaglio... ho provato ad aggiungere il codice da te indicato nel page load ma non cambia nulla


public partial class Report_AnalisiTrattative : System.Web.UI.Page
{
private SqlConnection sqlConnection;
private MsnHelper msnHelper;
private Int32 IDOwner;
private DataSet dataSet;

protected void Page_Load(object sender, EventArgs e)
{
msnHelper = MsnHelper.MsnHelperFactory();
OpenSqlConnection();

if (!this.Page.IsPostBack)
{
IDOwner = SessionWrapper.UsersID;
CarcicaDDL();

LocalReport rptReport = ReportViewer1.LocalReport;
string nomeFile = "Reports\\Report_AnalisiTrattative.rdlc";
string filePath = Path.Combine(Request.PhysicalApplicationPath, nomeFile);
rptReport.ReportPath = filePath;
}
}


protected void btnReport_Click(object sender, EventArgs e)
{
....

LocalReport rptReport = ReportViewer1.LocalReport;
string nomeFile = "Reports\\Report_AnalisiTrattative.rdlc";
string filePath = Path.Combine(Request.PhysicalApplicationPath, nomeFile);
rptReport.ReportPath = filePath;

dataSet = msnHelper.DataHelper.GetReport_AnalisiTrattative(sqlConnection, Tipologia_Filter, Categoria_Filter, AttivitaTipo_Filter, Owner_Filter, Comune_Filter, Provincia_Filter, Regione_Filter, Probabilita_Filter, KWP_Filter);
ReportDataSource reportDataSource = new ReportDataSource();
reportDataSource.Name = "Documento";

if (dataSet.Tables.Count > 0)
{
lblTotale.Text = "Totale elementi: " + dataSet.Tables[0].Rows.Count.ToString();
reportDataSource.Value = dataSet.Tables[0];
ReportViewer1.LocalReport.Refresh();
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(reportDataSource);
ReportViewer1.DataBind();
}
}

...

freeteo Profilo | Guru

ciao,
il nome della datasource è corretto? verifica a report aperto, nel menù, il nome esatto della datasource che ti compare.
Il resto del codice mi sembra corretto, a parte il fatto che nel load non serve che lo imposti se lo fai dopo nel button_click...e cmq puoi mettere una pausa e vedere la proprietà "DataSources" del LocalReport mentre sei in debug...


ciao.

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

squilibrio Profilo | Expert

Nel page load infatti l'avevo aggiunto per provare il tuo suggerimento! ;-)


per quanto riguarda il datasource dovrebbe essere OK, quando lo carico vedo tutto

freeteo Profilo | Guru

>Nel page load infatti l'avevo aggiunto per provare il tuo suggerimento!
>;-)
ok infatti come ti dicevo è inutile, anche se ovviamente non da errori


>per quanto riguarda il datasource dovrebbe essere OK, quando
>lo carico vedo tutto
perfetto, se hai trovato utile una risposta, accettala così chiudiamo il thread.

ps: per problemi di stampe, report etc... la prossima volta usa la stanza apposita del forum, così teniamo tutto in ordine ed hai maggiore probabilità di avere risposte immediate.

ciao.

Matteo Raumer
[MCAD .net]
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5