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.
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.
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.
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.
"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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With