visual studio procesamiento origen net informes informe especificado error durante definiciĆ³n datos asignar c# .net reporting-services visual-studio-2012 report

c# - studio - Informe.rdlc: no se puede crear un lector de datos para el conjunto de datos ''DataSet1''



origen de datos rdlc (8)

Creé un .rdlc-Report en VS 2012 usando el asistente de informes y agregué el origen de datos y el conjunto de datos. Cuando intento renderizar el informe usando el siguiente código, recibo el siguiente mensaje de error:

"No se puede crear un lector de datos para el conjunto de datos ''DataSet1''."

bytes = localReport.Render("PDF", sdeviceinfo, out smimetype, out sencoding, out sfilenameextension, out streamids, out myWarnings);

¡Gracias de antemano por cualquier sugerencia!


1) Asegúrese de que se ejecuta en modo administrador y tiene acceso al servidor SSRS.

2) Verifique si ha configurado el nombre de conjunto de datos correcto o si está cargando y asignándolo correctamente.

Verifique this muestra en MSDN.

¡Buena suerte!


Mi ''gotcha'' fue el descubrimiento de que DataSet no era lo mismo que Dataset.

(Sí, me doy cuenta de que en realidad estoy admitiendo esto en un foro público, ya que espero que cualquier persona pueda evitar este error tonto)


No puede crear ReportViewer y proporcionar un conjunto de datos verdadero. Es posible que obtenga un error debido a la técnica de suministro de parámetros. Puedes intentarlo así. Lo resolví usando esta forma.

protected void btnPdf_Click(object sender, EventArgs e) { ReportViewer viwer = new ReportViewer(); ObjectDataSource ob = new ObjectDataSource("dataset.YourTableAdapter", "GetData"); dataset.YourTableAdapter ds = new dataset.YourTableAdapter(); string PDF = "PDF"; string ReportType = "ReportType"; Warning[] warnings = null; string[] streamIds = null; string mimeType = string.Empty; string encoding = string.Empty; string extension = string.Empty; string filetype = string.Empty; viwer.SizeToReportContent = true; viwer.LocalReport.ReportPath = "reports/report/report.rdlc"; viwer.ProcessingMode = ProcessingMode.Local; ob.SelectParameters.Clear(); ob.SelectParameters.Add(QueryStringEnum.CompanyID, CurrentCompanyID.ToString()); ReportDataSource rds = new ReportDataSource("datasetname", (object) ds.GetData((long?)CurrentCompanyID.ToInt64()); viwer.LocalReport.DataSources.Add(rds); viwer.LocalReport.Refresh(); byte[] bytes = viwer.LocalReport.Render("PDF", null, out mimeType, out encoding, out extension, out streamIds, out warnings); }


Resolví el problema, mi error de codificación, había omitido los valores de parámetros "apropiados" del código aspx para SqlServerDataSource de la siguiente manera ...

Tenga en cuenta que NO existe DefaultValue para parameter-name = "p_CSV_VEHICLES"

Y (resultó) que los dos parámetros (= "p_CSV_VGROUPS" y = "p_CSV_VEHICLES") no podían pasar una cadena vacía "" como el valor predeterminado - cadena vacía no es válida en el contexto de selección para estos dos parámetros.

Después de que agregué DefaultValue y establecí DefaultValue (s) en valores de cadena válidos para cada parámetro, el informe se mostró perfectamente en el control ReportViewer en mi página web.

Aquí está el código aspx original (no funciona).

<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:FCI_WebMainConnectionString %>" SelectCommand="uspRPT_CostDetailFleet" SelectCommandType="StoredProcedure"> <SelectParameters> <asp:Parameter DefaultValue="5" Name="p_UID_DIVISION" Type="Int32" /> <asp:Parameter DefaultValue="85" Name="p_UID_CUSTOMER" Type="Int32" /> <asp:Parameter DefaultValue="FCIFLEETGRP" Name="p_SORT_ORDER" Type="String" /> <asp:Parameter DefaultValue="" Name="p_CSV_VGROUPS" Type="String" /> <asp:Parameter Name="p_CSV_VEHICLES" Type="String" /> <asp:Parameter DbType="Date" DefaultValue="#01/01/2013#" Name="p_dtStart0" /> <asp:Parameter DbType="Date" DefaultValue="#12/31/2013#" Name="p_dtEnd0" /> </SelectParameters> </asp:SqlDataSource>


Si se muestra un error, no se puede crear un lector de datos para el conjunto de datos del conjunto de datos1:

private void frm_report_Load(object sender, EventArgs e) { this.reportViewer1.RefreshReport(); reportViewer1.LocalReport.Refresh(); reportViewer1.LocalReport.DataSources.Clear(); reportViewer1.LocalReport.ReportEmbeddedResource = "cruds_reports.Report1.rdlc"; SqlCommand cmd = new SqlCommand("select * from tbl_info",con); SqlDataAdapter da = new SqlDataAdapter(); DataSet ds = new DataSet(); da.Fill(ds); DataTable dt = new DataTable(); dt = ds.Tables[0]; if (dt.Rows.Count>0) { rds = new ReportDataSource("DataSet1", dt); reportViewer1.LocalReport.DataSources.Add(rds); rds.Value = dt; reportViewer1.LocalReport.Refresh(); reportViewer1.RefreshReport(); } else { return; } }


También tuve el mismo problema. Después de mis observaciones identifiqué eso, los informes RDLC necesitan el conjunto de datos, ya sea que debe tener algunos registros o un objeto vacío (el objeto vacío tendrá los metadatos)

Entonces, la mejor práctica es siempre devolver un conjunto de datos con un objeto vacío (no Null o nothing ) o con algunos registros en él.


Tengo el mismo problema que "No se puede crear un lector de datos para el conjunto de datos ''zzz''"

La respuesta es ReportDataSource (cadena xxx, DataTable yyy)

Deberías usar el nombre correcto. xxx debe ser zzz


reportviewer1.LocalReport.DataSources.Add(New ReportDataSource("DataSet1", ObjectDataSource1))

es mejor que publique su código de cómo configura su fuente de datos para el informe.