Экземпляр источника данных не был предоставлен для источника данных "Сведения о продукте" в службе отчетов Майкрософт
Я пытаюсь отобразить запись в отчете. Данные в наборе данных. но для них это не бининд. При загрузке форм отображается макет отчета. Но когда я нажимаю на кнопку он показывает ошибки. ниже приведен мой код.
using Microsoft.Reporting.WinForms;
//------------------------------------------------------------------
// <copyright company="Microsoft">
// Copyright (c) Microsoft. All rights reserved.
// </copyright>
//------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ReportsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.reportViewer1.RefreshReport();
}
private void button1_Click(object sender, EventArgs e)
{
System.Data.DataSet ds = GetDataSet();
//reportViewer1.LocalReport.ReportPath = "Report1.rdlc";
ReportDataSource rds = new ReportDataSource("ProductsDataSet", ds.Tables[0]);
this.reportViewer1.LocalReport.DataSources.Clear();
this.reportViewer1.LocalReport.DataSources.Add(rds);
this.bindingSource1.DataSource = rds;
this.reportViewer1.RefreshReport();
}
private System.Data.DataSet GetDataSet()
{
System.Data.SqlClient.SqlConnection sqlConn = new System.Data.SqlClient.SqlConnection("Data Source=DELL;Initial Catalog=Products;Integrated Security=True");
sqlConn.Open();
string sql= string.Format ( @"select o.[User], o.OrderDate, o.Quantity, o.OrderDetail, c.ShopName, c.[Address], c.City, c.Ph, p.* from dbo.Clients c,dbo.Product_Service o,Product_D p,Junction j where o.ClientId = c.ClientId
and o.ProductId = j.ProductId
and j.PCode = p.PCode
and o.ClientId = 41
and o.OrderDate='11/9/2012';");
System.Data.SqlClient.SqlDataAdapter ad = new System.Data.SqlClient.SqlDataAdapter(sql, sqlConn);
System.Data.DataSet ds = new System.Data.DataSet();
ad.Fill(ds);
sqlConn.Close();
return ds;
}
}
}
в моих данных у меня есть 3 таблицы. Я выбираю источник привязки в верхней части reportviewer, где отображается небольшая стрелка.
5 ответов
Я столкнулся с этой проблемой при использовании версии 10 ReportViewer при использовании Visual Studio.Net 2012 Для редактирования кода.
Я нашел решение, взяв имя источника данных в сообщении об ошибке (в данном случае, это "Product_Detail"). Затем я вошел в представление исходного кода, нашел ReportViewer, его источники данных, а затем внутри его ReportDataSource.
Я установил свойство Name ReportDataSource таким же, как источник данных, упомянутый в сообщение об ошибке (т. е. "Product_Detail").
надеюсь, это сработает для вас так же, как и для меня.
кроме того, если у вас есть широта для использования более поздней версии элемента управления ReportViewer, вы можете обнаружить, что эта проблема либо не появляется, либо легче решить.
"ProductsDataSet" - это имя источника данных, который вы ему даете. Ваша ошибка говорит: "экземпляр источника данных не был предоставлен для источника данных "Product_Detail" в службе отчетов Microsoft"
Я предполагаю, что вы назначаете ему неправильное имя.
попробуйте
ReportDataSource rds = new ReportDataSource("Product_Detail", ds.Tables[0]);
Если у вас есть источник данных в отчете под названием "ProductsDataSet", то у вас, вероятно, есть 2, в котором вы хотите удалить тот, который вы не используете, или назначить его источник данных также.
Я столкнулся с этим в VS2013 в моем приложении c#.. поэтому в случае остальных..Если вы добавили набор данных в конструктор отчетов.. Перейдите в форму, в конструкторе щелкните стрелку действия на элементе управления reportviewer. Выберите Rebind Источники Данных.
Dim rptDataSource As ReportDataSource
Try
With Me.ReportViewer1.LocalReport
ReportViewer1.LocalReport.ReportPath = Application.StartupPath & "\RTFLS\Report1.rdlc"
'.DataSources.Clear()
End With
Dim ds As New POAS.CustomersTotalPayment
Dim da As New POAS.CustomersTotalPaymentTableAdapters.PAYMENTSTATUSTableAdapter
da.Fill(ds.PAYMENTSTATUS)
rptDataSource = New ReportDataSource("CustomersTotalPayment", ds.Tables("PAYMENTSTATUS"))
Me.ReportViewer1.LocalReport.DataSources.Add(rptDataSource)
Me.ReportViewer1.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.PrintLayout)
Catch ex As Exception
MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Me.ReportViewer1.RefreshReport()
при добавлении другой таблицы в форму xsd после добавления отчета в Средство просмотра отчетов может появиться эта ошибка.
- Удалить для просмотра отчетов и добавить его снова
- установите отчет в Средство просмотра отчетов
-
Теперь перейдите к событию Load формы (которое включает в себя средство просмотра отчетов и добавьте заливку для нового набора данных.
private void rptForm_Load(object sender, EventArgs e) { this.vwrpt_TableAdapter1.Fill(this.DataSet1.vwDataset); }