2012-11-11 20 views
13

Próbuję wyświetlić rekord w raporcie. Dane znajdują się w zestawie danych. ale to nie jest dla nich. Podczas ładowania formularzy pokazuje układ raportu. Ale po kliknięciu przycisku wyświetlają się błędy. poniżej to mój kod.Instancja źródła danych nie została dostarczona dla źródła danych "Product_Detail" w usłudze raportowania firmy 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; 
     } 
    } 
} 

W moim zestawie danych mam 3 tabele. Wybieram źródło bindowania na górze reportviewera, gdzie wyświetla się mała strzałka.

Odpowiedz

21

wpadłem na ten problem podczas korzystania z wersji 10 ReportViewer podczas korzystania z Visual Studio.NET 2012 do edycji kodu.

Znalazłem rozwiązanie, biorąc nazwę źródła danych w komunikacie o błędzie (w powyższym przypadku jest to "Product_Detail"). Następnie przeszedłem do widoku kodu źródłowego, odnalazłem ReportViewer, jego źródła danych, a następnie w jego ReportDataSource.

Ustawiam właściwość Name źródła ReportDataSource na źródło danych wymienione w komunikacie o błędzie (np. "Product_Detail").

Mam nadzieję, że to działa tak samo jak dla mnie.

Ponadto, jeśli masz swobodę korzystania z nowszej wersji formantu ReportViewer, może się okazać, że ten problem nie pojawia się lub jest łatwiejszy do rozwiązania.

9

"ProductsDataSet" to nazwa źródła danych, które nadajesz. Twój błąd jest następujący: "Źródło danych" Instancja źródła danych nie zostało dostarczone dla źródła danych "Product_Detail" w usłudze raportowania firmy Microsoft "

Zakładam, że przypisujesz mu złe imię.

spróbować

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

Jeśli masz do źródła danych w raporcie o nazwie „ProductsDataSet” to prawdopodobnie masz 2, w którym można by Wanna usunąć jeden nie używasz lub przypisać mu źródło danych również.

0
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

jeśli dodasz kolejną tabelę do formularza XSD po dodaniu raportu do przeglądarki raportów, możesz uzyskać ten błąd.

  1. usuwać zgłosić widza i dodać go ponownie
  2. ustawić raport widza raportu
  3. teraz przejść do zdarzenia Load formularza (który zawiera widza raportu i dodać do wypełnienia dla nowego zestawu danych .

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

wpadłem na to w VS2013 w moim C# aplikacji .. w przypadku więc inni się here..If dodano zestawu danych w projektancie raportów .. Idź do formularza, w DES igner, kliknij strzałkę akcji na formancie reportviewer. Wybierz Powiąż źródła danych.

+0

Dziękuję. Dlaczego Microsoft nie mógł umieścić tej sugestii w swoim komunikacie o błędzie. –

Powiązane problemy