Как запустить RDLC с использованием кодирования - PullRequest
4 голосов
/ 30 июня 2010

Я создал rdlc, где я использовал набор данных, взятый в качестве нового элемента в обозревателе решений для разработки моего отчета.После привязки мой отчет с того datasource, который называется Dataset1.Я создал его объект и попытался заполнить это datasource, используя кодирование.Теперь, когда я запускаю следующий код, я не получаю никакого результата.

В чем может быть проблема?

reportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local;
LocalReport localReport = reportViewer1.LocalReport;
localReport.DataSources.Clear();
localReport.ReportPath = @"E:\Projects\Manojp\AARFID_SSRS_Report\WindowsFormsApplication1\WindowsFormsApplication1\Local Report\rptTest.rdlc";

// DataSet dataset = new DataSet("AARFID_Report");
DataSet1 ds = new DataSet1();

// fill the Data Set from DataBase.
//ds.Tables.Remove("M_GUEST");
ds.Tables.Clear();
GetData(ref ds);

//
// Create a report data source for the sales order data

ReportDataSource rds = new ReportDataSource();
rds.Name = "AA";
rds.Value = ds.Tables[0];
localReport.DataSources.Add(rds); 
// reportViewer1.LocalReport.DataSources.Add(rds); 


reportViewer1.RefreshReport();
localReport.DataSources.Clear();

GetData() сделать это:

connection.Open();
ad.Fill(ds,"M_GUEST");
connection.Close();

В представлении отчета сообщение отображается как:

Экземпляр источника данных не предоставлен для источника данных 'dtaset1_m_guest'

Ответы [ 4 ]

1 голос
/ 20 сентября 2012

Эта строка

rds.Name = "AA"; 

должно соответствовать названию набора данных, определенного в отчете. В вашем случае это будет

rds.Name = "dtaset1_m_guest"; 
1 голос
/ 30 июня 2010

Убедитесь, что имена наборов данных в файле rdl и генераторе отчетов совпадают!

Самым простым способом было бы иметь DataSet, DataSource и экземпляры с именем "M_GUEST". Также не очищайте источники данных перед рендерингом.

0 голосов
/ 25 августа 2013

Если источник данных в привязке называется «Dataset1», то тот, который вы указали в коде, также должен называться так же.

Я добавляю это так, как это прекрасно работает, как показано ниже:

 reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Dataset1", ds.Tables[0]));
0 голосов
/ 08 июля 2013

Когда вы добавляете отчет .rdlc в ваш проект с помощью мастера, то по умолчанию имя набора данных принимается за «DataSet1».Теперь, если вы хотите связать динамически новый набор данных, тогда имя этого набора данных должно быть «DataSet1».Попробуйте изменить его, а также убедитесь, что таблица [0] содержит некоторые данные (строки), для которых DataType сопоставляется с исходным dataType из «DataSet1».Если DataType не совпадает, данные не будут поступать в ваш ReportViewer.Попробуйте этот код: -

string exeFolder = (Path.GetDirectoryName(Application.StartupPath)).Substring(0, (Path.GetDirectoryName(Application.StartupPath)).Length - 3);
string reportPath = Path.Combine(exeFolder, @"Reports\SessionReport.rdlc");
Microsoft.Reporting.WinForms.ReportDataSource rds = new Microsoft.Reporting.WinForms.ReportDataSource("DataSet1", ds.Tables[0]);
this.reportViewer1.LocalReport.DataSources.Add(rds);
this.reportViewer1.LocalReport.ReportPath = reportPath;
this.reportViewer1.RefreshReport();

Подробнее о отчете .rdlc (основная логика) см. По ссылке Как создать отчет (RDLC) без базы данных?

...