web-dev-qa-db-ja.com

Microsoftレポートサービスのデータソース「Product_Detail」にデータソースインスタンスが指定されていません

レポートにレコードを表示しようとしています。データはデータセットにあります。しかし、それは彼らにバインドされていません。フォームをロードすると、レポートのレイアウトが表示されます。しかし、ボタンをクリックするとエラーが表示されます。以下は私のコードです。

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つのテーブルがあります。レポートビューアの上部にある小さな矢印が表示されているバインドソースを選択します。

19
Haris

Visual Studio.Net 2012を使用してコードを編集しているときに、ReportViewerのバージョン10を使用しているときに、この問題にぶつかりました。

エラーメッセージでデータソースの名前を取得することで解決策を見つけました(上記の場合、「Product_Detail」です)。その後、ソースコードビューに移動し、ReportViewerとそのDataSourcesを見つけてから、ReportDataSource内を見つけました。

ReportDataSourceのNameプロパティを、エラーメッセージに記載されているデータソースと同じものに設定します(つまり、 "Product_Detail")。

これが私にとってもそうであったように、あなたにも役立つことを願っています。

また、ReportViewerコントロールの新しいバージョンを使用する自由がある場合、この問題は表示されないか、解決が容易になることがあります。

31
user1026460

「ProductsDataSet」は、提供するデータソースの名前です。エラーは、「Microsoftレポートサービスのデータソース「Product_Detail」にデータソースインスタンスが提供されていません」と言っています

間違った名前を割り当てていると思います。

試して、

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

レポートに「ProductsDataSet」というデータソースがある場合は、おそらく使用していないデータソースを削除するか、データソースも割り当てます。

12
Shelby115

私はVS2013のc#アプリでこれに遭遇しました。他の人がここに来た場合に備えて。レポートデザイナーにデータセットを追加した場合。 [データソースの再バインド]を選択します。

8
da Bich

デフォルトで私のrdlcファイルに2つのdataSetが作成されました(理由はわかりません)。メモ帳でRDLCファイルを開き、不要なデータソースを削除しました。値は2つの異なるデータセットに2回割り当てられていました。これがあなたの助けになることを願っています。

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

レポートビューアーにレポートを追加した後にxsdフォームに別のテーブルを追加すると、このエラーが発生する可能性があります。

  1. レポートビューアーを削除して再度追加します
  2. レポートビューアにレポートを設定します
  3. 次に、フォームのLoadイベント(レポートビューアーを含む)に移動し、新しいデータセットのFillを追加します。

    private void rptForm_Load(object sender, EventArgs e) {
      this.vwrpt_TableAdapter1.Fill(this.DataSet1.vwDataset);
    }
    
0
Esmund
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
0
Ashraf

私はこの投稿が少し古いことを知っていますが、私のソリューションを皆さんと共有したいと思います。

私のプロジェクトでは、「データソースインスタンスがデータソース 'dataset1'に提供されていません」という同じエラーが発生しました。そして、私はプロジェクトでコードファーストメソッドでエンティティフレームワークを使用しました。

上記のエラーを解決するには、以下の手順に従います。

  1. レポートデザイナー(レポートビューアー)のアクション矢印を選択します。
  2. [レポートの選択]ドロップダウンリストからRDLCレポートを選択します。
  3. Choose Data SourceChoose Data Source を選択します
  4. 次に、必要なデータソースを選択します 強調表示された領域のドロップダウンからデータソース/バインディングソースを選択します
0
vihaga yohan94