Informe .rdlc: no se puede crear un lector de datos para el conjunto de datos ‘DataSet1’

He creado un .rdlc-Report en VS 2012 usando el asistente de informes y agregue la fuente de datos y el conjunto de datos. Cuando bash procesar el informe utilizando el código siguiente, aparece 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!

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

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 porque espero que alguien más pueda evitar este error tonto)

No puede crear ReportViewer y proporcionar un verdadero conjunto de datos. Es posible que esté obteniendo un error debido a la técnica de provisión de parámetros. Puedes intentarlo de esta manera. Resolví utilizando de esta manera.

  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); } 

1) Asegúrese de que está ejecutando en modo administrador y tiene acceso al servidor SSRS.

2) Verifique si ha establecido el nombre de conjunto de datos correcto o si lo está cargando y asignando correctamente.

Por favor revise esta muestra en MSDN.

¡Buena suerte!

Resolví el problema, mi error de encoding, había omitido los valores de parámetro ‘correctos’ del código aspx para el SqlServerDataSource de la siguiente manera …

Observe que NO hay un valor predeterminado para nombre-parámetro = “p_CSV_VEHICLES”

Y (resultó) que los dos parámetros (= “p_CSV_VGROUPS” y = “p_CSV_VEHICLES”) no pudieron pasar una cadena vacía “” como el valor predeterminado; la 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 configuré DefaultValue (s) a 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).

             

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

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

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

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

El error de visualización no 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; } } 

introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

Tienes que dar “DataSet1”, de lo contrario no funcionará.