Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

A data source instance has not been supplied for the data source"Product_Detail" in Microsoft reporting service

Tags:

I`m trying to display record in a Report. Data is in the Dataset. but it is not binind to them. When forms load it shows it report layout. But when i click on the button it show errors. below is my code.

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;
        }
    }
}

In my data set i have 3 tables. I select the bind source on the top of the reportviewer where a little arrow shows.

like image 512
Haris Avatar asked Nov 11 '12 15:11

Haris


People also ask

What is a data source instance?

The data source instance is the logical platform "instance" (for example, Dev, QA, or Production) that this physical instance of the DSP represents. Before moving items between instances via the CTS process, the source and target instances must be indicated in the DSP.

How do I add a DataSet to Rdlc report in Visual Studio 2010?

To create a dataset for the RDLC report, click Reporting under Visual C# Items. Click Report, and then click Add. The Report Wizard opens. Enter a dataset name in Name field.To choose a data source for the dataset, click New on the right of Data source drop-down combo box.


2 Answers

I bumped into this problem while using version 10 of the ReportViewer while using Visual Studio.Net 2012 to edit code.

I found a solution by taking the name of the Data Source in the error message (in the case above, it's "Product_Detail"). I then went into source code view, found the ReportViewer, its DataSources, and then inside its ReportDataSource.

I set the Name property of the ReportDataSource to the same as the Data Source mentioned in the error message (ie "Product_Detail").

I hope this works for you as it did for me.

Also, if you have the latitude to use a later version of the ReportViewer control, you may find that this problem either doesn't appear or is easier to solve.

like image 152
JustDucky Avatar answered Sep 18 '22 14:09

JustDucky


"ProductsDataSet" is the name of the DataSource you are giving it. Your Error is saying "A data source instance has not been supplied for the data source“Product_Detail” in Microsoft reporting service"

I'm assuming you're assigning it the wrong name.

Try,

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

If you do have a datasource in the report called "ProductsDataSet" then you probably have 2, in which you'd wanna delete the one you aren't using or assign it a datasource as well.

like image 44
Shelby115 Avatar answered Sep 21 '22 14:09

Shelby115