Bindas
Bindas

Reputation: 970

Report Viewer export to pdf getting error

I am getting this error "Cannot create a data reader for dataset 'DataSet1'."

I expend lots of my time for solving this issue but unable to resolved.Same code is working good for report generation but at the time of pdf generation it stuck.

Here is my code please reply.

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

        }

Upvotes: 1

Views: 1688

Answers (1)

Sandeep Kumar
Sandeep Kumar

Reputation: 76

It will work for you.Make sure dataset name is not different.

Code for your reference.

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



    }

Upvotes: 2

Related Questions