locked
Cannot create a data reader for dataset 'DataSet1'. RRS feed

  • Question

  • User1465791785 posted

    i am following this tutorial  Walkthrough: Printing a Local Report without Preview

    http://msdn.microsoft.com/en-us/library/ms252091.aspx

    and made some changes since i doesnt have xml file, i have xsd file.

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

    here is what i have done so far

    using System;
    using System.IO;
    using System.Data;
    using System.Text;
    using System.Drawing.Imaging;
    using System.Drawing;
    using System.Drawing.Printing;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Collections.Generic;
    using System.Windows.Forms;
    //using Microsoft.Reporting.WinForms;
    using Microsoft.Reporting.WebForms;
    
    public partial class PortActivites : System.Web.UI.Page
    {
        
            private int m_currentPageIndex;
            private IList<Stream> m_streams;
    
            
            // Routine to provide to the report renderer, in order to
            //    save an image for each page of the report.
            private Stream CreateStream(string name,
              string fileNameExtension, Encoding encoding,
              string mimeType, bool willSeek)
            {
                Stream stream = new MemoryStream();
                m_streams.Add(stream);
                return stream;
            }
            // Export the given report as an EMF (Enhanced Metafile) file.
            private void Export(LocalReport report)
            {
                string deviceInfo =
                  @"<DeviceInfo>
                    <OutputFormat>EMF</OutputFormat>
                    <PageWidth>8.5in</PageWidth>
                    <PageHeight>11in</PageHeight>
                    <MarginTop>0.25in</MarginTop>
                    <MarginLeft>0.25in</MarginLeft>
                    <MarginRight>0.25in</MarginRight>
                    <MarginBottom>0.25in</MarginBottom>
                </DeviceInfo>";
                Warning[] warnings;
                m_streams = new List<Stream>();
                report.Render("Image", deviceInfo, CreateStream,
                   out warnings);
                foreach (Stream stream in m_streams)
                    stream.Position = 0;
            }
            // Handler for PrintPageEvents
            private void PrintPage(object sender, PrintPageEventArgs ev)
            {
                Metafile pageImage = new
                   Metafile(m_streams[m_currentPageIndex]);
    
                // Adjust rectangular area with printer margins.
                Rectangle adjustedRect = new Rectangle(
                    ev.PageBounds.Left - (int)ev.PageSettings.HardMarginX,
                    ev.PageBounds.Top - (int)ev.PageSettings.HardMarginY,
                    ev.PageBounds.Width,
                    ev.PageBounds.Height);
    
                // Draw a white background for the report
                ev.Graphics.FillRectangle(Brushes.White, adjustedRect);
    
                // Draw the report content
                ev.Graphics.DrawImage(pageImage, adjustedRect);
    
                // Prepare for the next page. Make sure we haven't hit the end.
                m_currentPageIndex++;
                ev.HasMorePages = (m_currentPageIndex < m_streams.Count);
            }
    
            private void Print()
            {
                if (m_streams == null || m_streams.Count == 0)
                    throw new Exception("Error: no stream to print.");
                PrintDocument printDoc = new PrintDocument();
                if (!printDoc.PrinterSettings.IsValid)
                {
                    throw new Exception("Error: cannot find the default printer.");
                }
                else
                {
                    printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
                    m_currentPageIndex = 0;
                    printDoc.Print();
                }
            }
    
    
         public void Dispose()
            {
                if (m_streams != null)
                {
                    foreach (Stream stream in m_streams)
                        stream.Close();
                    m_streams = null;
                }
            }
    
            protected void btnSubmit_Click(object sender, EventArgs e)
            {
    
    
        ReportViewer1.ProcessingMode = ProcessingMode.Local;
        LocalReport rep = ReportViewer1.LocalReport;
         
        rep.ReportPath = "Reports\\DepartureReport.rdlc";
        DataSet ds = new DataSet();
    
            
        ReportDataSource DS = new ReportDataSource();
      DS.Name = "DataSet1";
       DS.Value = ds.Tables["SqlDataSource1"];
        rep.DataSources.Clear();
    
    
          ReportParameter Sdate = new ReportParameter("StartDate", txtStartDate.Text);
            ReportParameter Edate = new ReportParameter("EndDate", txtEndDate.Text);
    
    
        this.ReportViewer1.LocalReport.SetParameters(Sdate);
                   this.ReportViewer1.LocalReport.SetParameters(Edate);
    
    
    
        rep.DataSources.Add(DS);
        rep.Refresh();
        Export(rep);
        Print();
    
    
    }
    
    }
    
    
    
        
           
        <table class="auto-style1">
            <tr>
                <td colspan="2">Port Activities</td>
                <td>&nbsp;</td>
            </tr>
            <tr>
                <td class="auto-style2">Date From</td>
                <td class="auto-style3">
                    <asp:TextBox ID="txtStartDate" runat="server"></asp:TextBox>
                    <asp:CalendarExtender ID="txtStartDate_CalendarExtender" runat="server" Enabled="True" TargetControlID="txtStartDate">
                    </asp:CalendarExtender>
                </td>
                <td>Date To<asp:TextBox ID="txtEndDate" runat="server"></asp:TextBox>
                    <asp:CalendarExtender ID="txtEndDate_CalendarExtender" runat="server" Enabled="True" TargetControlID="txtEndDate">
                    </asp:CalendarExtender>
                </td>
            </tr>
            <tr>
                <td class="auto-style2">
                    <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
                </td>
                <td class="auto-style3">
                    
                </td>
       
                </td>
            </tr>
        </table>
        <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
        </asp:ToolkitScriptManager>
    
            <rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" Font-Size="8pt" WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt" Width="880px">
                <LocalReport ReportPath="Reports\DepartureReport.rdlc">
                    <DataSources>
                    <rsweb:ReportDataSource DataSourceId="SqlDataSource1" Name="DataSet1" />
                </DataSources>
                </LocalReport>
        </rsweb:ReportViewer>



    Cannot create a data reader for dataset 'DataSet1'.

    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

    Exception Details: Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: Cannot create a data reader for dataset 'DataSet1'.

    Source Error: 

    Line 52:             Warning[] warnings;
    Line 53:             m_streams = new List<Stream>();
    Line 54:             report.Render("Image", deviceInfo, CreateStream,
    Line 55:                out warnings);
    Line 56:             foreach (Stream stream in m_streams)
    Saturday, July 19, 2014 3:30 AM

Answers

  • User-734925760 posted

    marya

    ReportViewer1.ProcessingMode = ProcessingMode.Local;
        LocalReport rep = ReportViewer1.LocalReport;
         
        rep.ReportPath = "Reports\\DepartureReport.rdlc";
        DataSet ds = new DataSet();
    
            
        ReportDataSource DS = new ReportDataSource();
      DS.Name = "DataSet1";
       DS.Value = ds.Tables["SqlDataSource1"];
        rep.DataSources.Clear();

    According to your description and the error message, you should make sure the DataSet1 has data.

    I only see you create a DataSet object, but I didn't see you set data value to DataSet object.

    The article you provided, the xml file is the DataSource of the LocalReport, but your DataSet DataSet1 is only a null object. So please refer to set data value to DataSet1.

    Hope it's useful for you.

    Best Regards,

    Michelle Ge

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Monday, July 21, 2014 1:56 AM