报表查看器导出到pdf获取错误

本文关键字:pdf 获取 取错误 报表 | 更新日期: 2023-09-27 18:21:17

我收到此错误"无法为数据集"DataSet1"创建数据读取器。"

我花了很多时间来解决这个问题,但无法解决。同样的代码也适用于生成报告,但在生成pdf时却停滞不前。

这是我的代码,请回复。

 protected void btnPdf_Click(object sender, EventArgs e)
        {
            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;
            long _landIds = 0;
            if (_farmId > 0)
            {
                Land land = LandManager.GetLandByFarmID(_farmId);
                _landIds = land.LandID;
            }

            ReportViewer_MyReportID.SizeToReportContent = true;
            ReportViewer_MyReportID.LocalReport.ReportPath = "reports/report/report.rdlc";
            ReportViewer_MyReportID.ProcessingMode = ProcessingMode.Remote;
            ObjectDataSource_Id.SelectParameters.Clear();
            ObjectDataSource_Id.SelectParameters.Add(QueryStringEnum.CompanyID, CurrentCompanyID.ToString());
            ObjectDataSource_Id.SelectParameters.Add(QueryStringEnum.LandID, _landIds.ToString());
            var days = "-" + rdDuration.SelectedValue;
            ObjectDataSource_Id.SelectParameters.Add(QueryStringEnum.Days, days.ToString());
            ReportViewer_MyReportID.LocalReport.Refresh();
            byte[] bytes = ReportViewer_MyReportID.LocalReport.Render("PDF", null,
             out mimeType, out encoding, out extension, out streamIds, out warnings);
            FileStream fs = new FileStream(Server.MapPath("~/GeneratedFiles/" + ReportType + "." + "PDF"), FileMode.OpenOrCreate);
            fs.Write(bytes, 0, bytes.Length);
            fs.Close();
        }

报表查看器导出到pdf获取错误

它将为您工作。请确保数据集名称没有不同。

代码供您参考。

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;
        long _landIds = 0;
        if (_farmId > 0)
        {
            Land land = LandManager.GetLandByFarmID(_farmId);
            _landIds = land.LandID;
        }
        viwer.SizeToReportContent = true;
        viwer.LocalReport.ReportPath = "reports/report/report.rdlc";
        viwer.ProcessingMode = ProcessingMode.Local;
        ob.SelectParameters.Clear();
        ob.SelectParameters.Add(QueryStringEnum.CompanyID, CurrentCompanyID.ToString());
        ob.SelectParameters.Add(QueryStringEnum.LandID, _landIds.ToString());
        var days = "-" + rdDuration.SelectedValue;
        ob.SelectParameters.Add(QueryStringEnum.Days, days.ToString());
        ReportDataSource rds = new ReportDataSource("datasetname", (object) ds.GetData((long?)CurrentCompanyID.ToInt64(), (int?)days.ToInt(), (long?)_landIds.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);
        FileStream fs = new FileStream(Server.MapPath("~/GeneratedFiles/" + ReportType + "." + "PDF"), FileMode.OpenOrCreate);
        fs.Write(bytes, 0, bytes.Length);
        fs.Close();

    }