.rdlc报告 – 无法为数据集’DataSet1’创建数据读取器

我使用报告向导在VS 2012下创建了一个.rdlc-Report,并添加了数据源和数据集。 当我尝试使用下面的代码呈现报告时,我收到以下错误消息:

“无法为数据集’DataSet1’创建数据读取器。”

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

在此先感谢您的任何建议!

我有同样的问题,“无法为数据集’zzz创建数据阅读器’”

答案是ReportDataSource(字符串xxx,DataTable yyy)

你应该使用正确的名称。 xxx应该是zzz

我的’问题’是DataSet与Dataset不同的发现。

(是的,我意识到我实际上是在公共论坛上承认这一点,因为我希望其他任何人都可以避免这种愚蠢的错误)

您无法创建ReportViewer并提供真正的数据集。由于参数提供技术,您可能会收到错误。 你可以尝试这样。我用这种方式解决了。

  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)确保您在管理员模式下运行,并且您可以访问SSRS服务器。

2)validation您是否设置了正确的数据集名称,或者是否正确加载和分配它。

请在MSDN上查看此示例。

祝好运!

我解决了这个问题 – 我的编码错误 – 我从SqlServerDataSource的aspx代码中省略了’正确’的参数值,如下所示……

请注意,参数名称=“p_CSV_VEHICLES”没有DefaultValue

AND(结果)两个参数(=“p_CSV_VGROUPS”和=“p_CSV_VEHICLES”)无法传递空字符串“”作为默认值 – 空字符串在这两个参数的选择上下文中无效。

添加DefaultValue并将DefaultValue(s)设置为每个参数的有效字符串值后,报告在我的网页上的ReportViewer控件中完美显示。

这是原始(不工作)的aspx代码。

             

我也有同样的问题。 在我的观察后我发现,RDLC报告确实需要数据集,它应该在其中有一些记录或空对象(空对象将具有元数据)

因此,最佳实践始终返回具有空对象(不是Nullnothing )或其中包含一些记录的数据集。

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

你发布代码的方式最好是如何将数据源设置为报表。

显示错误无法为dataset1的数据集创建数据读取器:

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

在此处输入图像描述

在此处输入图像描述

你必须提供“DataSet1”,否则它将无法工作。