Экземпляр источника данных не был предоставлен для источника данных "Product_Detail" в службе отчетов Microsoft

Я пытаюсь показать запись в отчете. Данные находятся в наборе данных. но для них это не бит. При загрузке форм он отображает макет отчета. Но когда я нажимаю на кнопку, она показывает ошибки. ниже мой код.

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 таблицы. Я выбираю источник связывания в верхней части окна просмотра отчетов, где отображается небольшая стрелка.

Ответ 1

Я столкнулся с этой проблемой при использовании версии 10 ReportViewer при использовании Visual Studio.Net 2012 для редактирования кода.

Я нашел решение, взяв имя источника данных в сообщении об ошибке (в приведенном выше примере это "Product_Detail"). Затем я перешел в исходный код, нашел ReportViewer, его DataSources, а затем внутри своего ReportDataSource.

Я установил свойство Name для источника ReportDataSource таким же, как источник данных, упомянутый в сообщении об ошибке (то есть "Product_Detail").

Надеюсь, это сработает для вас, как и для меня.

Кроме того, если у вас есть широта для использования более поздней версии элемента управления ReportViewer, вы можете обнаружить, что эта проблема либо не появляется, либо ее проще решить.

Ответ 2

"ProductsDataSet" - это имя источника данных, который вы ему даете. В вашей ошибке говорится: "Экземпляр источника данных не был предоставлен для источника данных" Product_Detail "в службе отчетов Microsoft"

Я предполагаю, что вы назначаете ему неправильное имя.

Пытаться,

ReportDataSource rds = new ReportDataSource("Product_Detail", ds.Tables[0]);

Если у вас есть источник данных в отчете под названием "ProductsDataSet", то у вас, вероятно, есть 2, в которых вы хотите удалить тот, который вы не используете, или назначить ему источник данных.

Ответ 3

Я столкнулся с этим в VS2013 в моем приложении С#, поэтому в случае, если другие получат здесь. Если вы добавили набор данных в конструктор отчетов. Перейдите к своей форме, в дизайнере щелкните стрелку действия элемента управления reportviewer. Выберите Rebind Data Sources.

Ответ 4

    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()

Ответ 5

если вы добавите другую таблицу в форму xsd после добавления отчета в средство просмотра отчетов, вы можете получить эту ошибку.

  1. удалить отчет для просмотра и добавить его снова
  2. настроить отчет для средства просмотра отчетов
  3. перейдите к событию Load формы (включая средство просмотра отчетов и добавьте Fill для нового набора данных.

    private void rptForm_Load(object sender, EventArgs e) {
      this.vwrpt_TableAdapter1.Fill(this.DataSet1.vwDataset);
    }
    

Ответ 6

В моем rdlc файле по умолчанию было создано два набора данных (не знаю причину). Открыл файл RDLC через блокнот и удалил ненужный источник данных. Значения присваивались два раза двум разным наборам данных. Надеюсь, это поможет вам.

Ответ 7

Imports Microsoft.Reporting.WebForms

Partial Class Rpt_reports
Inherits System.Web.UI.Page

  Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    If Not IsPostBack Then
        Dim ds As New Custamer
        'da.Fill(ds.Tables("custamer")
        Dim path As String = Server.MapPath("customerinfo.rdlc")

        ReportViewer1.LocalReport.DataSources.Clear()
        ReportViewer1.LocalReport.ReportPath = path
        ReportViewer1.LocalReport.DataSources.Add(New Microsoft.Reporting.WebForms.ReportDataSource("Rpt_reports", ds.Tables("Custamer")))
        ReportViewer1.LocalReport.Refresh()
    End If
  End Sub

  'Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

  'End Sub

End Class

Ответ 8

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

В моем проекте я получил ту же ошибку: "Не предоставлен экземпляр источника данных для источника данных" dataset1 " ". И я использовал в своем проекте фреймворк с методом code-first.

Чтобы устранить вышеуказанную ошибку, выполните следующие шаги.

  1. Выберите стрелку действия в конструкторе отчетов (Средство просмотра отчетов).
  2. И выберите отчет RDLC из выпадающего списка.
  3. Выберите " Выбор источника данных ". Выберите источник данных.
  4. Затем выберите нужный источник данных. Выберите источник данных/источник привязки из выпадающего списка в выделенной области.