web-dev-qa-db-fra.com

Aucune instance de source de données n'a été fournie pour la source de données "Product_Detail" dans le service de génération de rapports Microsoft.

J'essaie d'afficher un enregistrement dans un rapport. Les données sont dans le jeu de données. mais ce n'est pas binind pour eux. Lorsque les formulaires sont chargés, il affiche la mise en page du rapport. Mais quand je clique sur le bouton, cela montre les erreurs ..__ ci-dessous est mon 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;
        }
    }
}

Dans mon ensemble de données, j'ai 3 tables. Je sélectionne la source de liaison en haut de la fenêtre Reportviewer où une petite flèche indique. 

16
Haris

Je me suis heurté à ce problème lors de l'utilisation de la version 10 de ReportViewer lors de l'utilisation de Visual Studio.Net 2012 pour modifier le code.

J'ai trouvé une solution en prenant le nom de la source de données dans le message d'erreur (dans le cas ci-dessus, il s'agit de "Product_Detail"). Je suis ensuite passé en vue du code source, j'ai trouvé le ReportViewer, ses sources de données, puis à l'intérieur de son ReportDataSource.

J'ai défini la propriété Name de ReportDataSource sur la même source que la source de données mentionnée dans le message d'erreur (par exemple, "Product_Detail").

J'espère que cela fonctionne pour vous comme il l'a fait pour moi.

En outre, si vous avez la latitude d'utiliser une version ultérieure du contrôle ReportViewer, vous constaterez peut-être que ce problème ne s'affiche pas ou qu'il est plus facile à résoudre.

30
user1026460

"ProductsDataSet" est le nom de la source de données que vous lui attribuez . Votre erreur indique "Aucune instance de source de données n'a été fournie pour la source de données" Product_Detail "dans le service de génération de rapports Microsoft"

Je suppose que vous lui attribuez un mauvais nom.

Essayer, 

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

Si vous avez une source de données dans le rapport appelée "ProductsDataSet", vous en avez probablement 2, dans lesquelles vous souhaitez supprimer celle que vous n'utilisez pas ou lui affecter également une source de données.

10
Shelby115

Je me suis heurté à cela dans VS2013 dans mon application c #. Ainsi, si d'autres personnes arrivent ici .. Si vous avez ajouté le jeu de données dans le concepteur de rapport ... Accédez à votre formulaire, dans le concepteur, cliquez sur la flèche d'action du contrôle reportviewer. Sélectionnez Rebind Data Sources. 

7
da Bich

Il y avait deux ensembles de données créés dans mon fichier rdlc par défaut (je ne connais pas la raison). Fichier RDLC ouvert via le bloc-notes et suppression de la source de données inutile. Les valeurs ont été affectées deux fois à deux jeux de données différents . Nous espérons que cela vous aidera.

0
vaibhav nag
    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()
0
Prince

si vous ajoutez une autre table au formulaire xsd après avoir ajouté le rapport à l'afficheur de rapports, vous risquez d'obtenir cette erreur. 

  1. supprimer pour afficher le spectateur et l'ajouter à nouveau
  2. définir le rapport à la visionneuse de rapports
  3. maintenant, allez à l'événement Load du formulaire (qui inclut la visionneuse de rapport et ajoutez le remplissage pour le nouvel ensemble de données. 

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

Importe Microsoft.Reporting.WebForms Partial Class Rpt_reports Hérite de System.Web.UI.Page Protected Sub Page_Load (expéditeur en tant qu'objet, e en tant que EventArgs) gère Me.Load Si pas IsPostBack Alors 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

Classe de fin

0
Ashraf