c# - visual - No se ha proporcionado una instancia de origen de datos para el origen de datos "Product_Detail" en el servicio de informes de Microsoft
reportviewer c# webform (8)
"ProductsDataSet" es el nombre del DataSource que le está dando. El error dice "No se ha proporcionado una instancia de origen de datos para el origen de datos" Product_Detail "en el servicio de informes de Microsoft"
Estoy asumiendo que le estás asignando el nombre equivocado.
Tratar,
ReportDataSource rds = new ReportDataSource("Product_Detail", ds.Tables[0]);
Si tiene un origen de datos en el informe llamado "ProductsDataSet", entonces probablemente tenga 2, en los cuales querría eliminar el que no está usando o asignarle un origen de datos también.
Estoy tratando de mostrar el registro en un informe. Los datos están en el conjunto de datos. Pero no es para ellos. Cuando los formularios se cargan se muestra el diseño del informe. Pero cuando hago clic en el botón se muestran errores. a continuación es mi código.
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;
}
}
}
En mi conjunto de datos tengo 3 tablas. Selecciono la fuente de enlace en la parte superior del visor de informes donde se muestra una pequeña flecha.
Hubo dos conjuntos de datos creados en mi archivo rdlc por defecto (no sé la razón). Abrió el archivo RDLC a través del bloc de notas y eliminó la fuente de datos que no era necesaria. Los valores se asignaron dos veces a dos conjuntos de datos diferentes. Espero que esto pueda ayudarte.
Imports Microsoft.Reporting.WebForms Partial Class Rpt_reports Inherits System.Web.UI.Page Protected Sub Page_Load (Sender As Object, e As EventArgs) Maneja Me.Load Si no es IsPostBack Entonces 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
Clase final
Me encontré con esto en VS2013 en mi aplicación c # ... así que en caso de que otros lleguen aquí ... Si agregó el conjunto de datos en el diseñador de informes ... Vaya a su formulario, en el diseñador, haga clic en la flecha de acción en el control de visor de informes. Seleccione Rebind Data Sources.
Me topé con este problema mientras utilizaba la versión 10 de ReportViewer mientras usaba Visual Studio.Net 2012 para editar el código.
Encontré una solución tomando el nombre de la fuente de datos en el mensaje de error (en el caso anterior, es "Product_Detail"). Luego entré en la vista del código fuente, encontré el ReportViewer, sus DataSources y luego dentro de su ReportDataSource.
Establecí la propiedad Nombre de ReportDataSource en la misma que la fuente de datos mencionada en el mensaje de error (es decir, "Product_Detail").
Espero que esto funcione para usted como lo hizo para mí.
Además, si tiene la latitud para usar una versión posterior del control ReportViewer, es posible que este problema no aparezca o sea más fácil de resolver.
Sé que esta publicación es un poco antigua, pero me gustaría compartir mi solución con ustedes para que les sirva de ayuda.
En mi proyecto obtuve el mismo error, que es " no se ha proporcionado una instancia de fuente de datos para la fuente de datos ''dataset1'' ". Y utilicé framework de entidades con el método de código primero en mi proyecto.
Para resolver el error anterior sigo los pasos a continuación.
- Seleccione la flecha de acción en el diseñador de informes (Visor de informes).
- Y seleccione el informe RDLC de la lista desplegable de elegir informe.
- Seleccione " Elegir origen de datos " Elegir origen de datos
- Luego, seleccione el origen de datos que desea. Seleccione el origen de datos / enlace de la lista desplegable en el área resaltada
si agrega otra tabla al formulario xsd después de agregar el informe al visor de informes, puede obtener este error.
- eliminar al visor de informes y agregarlo de nuevo
- configurar el informe para el visor de informes
ahora vaya al evento de carga del formulario (que incluye el visor de informes y agregue el relleno para el nuevo conjunto de datos).
private void rptForm_Load(object sender, EventArgs e) { this.vwrpt_TableAdapter1.Fill(this.DataSet1.vwDataset); }
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()