【问题标题】:An Error Occured During Local report Processing本地报表处理出错
【发布时间】:2014-12-17 07:38:47
【问题描述】:

我正在尝试在打印机上进行自动打印,但出现错误 "An Error Occured during Local report Processing"。这是我的代码:

private Stream CreateStream(string name,
              string fileNameExtension, Encoding encoding,
              string mimeType, bool willSeek)
                {
                Stream stream = new FileStream(@"..\..\" + name +
                   "." + fileNameExtension, FileMode.Create);
                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>2.5in</PageWidth>" +
                  "  <PageHeight>11in</PageHeight>" +
                  "  <MarginTop>0.5in</MarginTop>" +
                  "  <MarginLeft>2in</MarginLeft>" +
                  "  <MarginRight>5in</MarginRight>" +
                  "  <MarginBottom>0in</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]);
                ev.Graphics.DrawImage(pageImage, ev.PageBounds);
                m_currentPageIndex++;
                ev.HasMorePages = (m_currentPageIndex < m_streams.Count);
                }

            private void Print()
                {
                const string printerName =
                   "HP LaserJet 2300 PCL6 Class Driver";
                if(m_streams == null || m_streams.Count == 0)
                    return;
                PrintDocument printDoc = new PrintDocument();
                printDoc.PrinterSettings.PrinterName = printerName;
                if(!printDoc.PrinterSettings.IsValid)
                    {
                    string msg = String.Format(
                       "Can't find printer \"{0}\".", printerName);
                    MessageBox.Show(msg, "Print Error");
                    return;
                    }
                printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
                printDoc.Print();
                }

    Code Button Click Event

    ds.Tables.Add(dt);
    ds.WriteXmlSchema("sample.xml");
    ds.ReadXml("sample.xml");
    ds.WriteXmlSchema("sample.xsd");

    LocalReport report = new LocalReport();
    report.ReportPath = "SaleReport1.rdlc";
    report.DataSources.Add(
    new ReportDataSource("Table1", ds.Tables[0]));
    Export(report);
    m_currentPageIndex = 0;
    Print();

【问题讨论】:

标签: c# winforms rdlc


【解决方案1】:

这似乎不是您发布的代码的问题,而是您的报告定义中的错误。

您必须捕获异常并查看 InnerException 的各个级别;即:

ex.Message
ex.InnerException.Message
ex.InnerException.InnerException.Message

【讨论】:

    【解决方案2】:

    我有同样的问题。报告处理过程中发生错误。 DatasetName,我发现连接字符串有问题;我不得不从使用 windows 身份验证切换到 sql 身份验证,然后我的报告才起作用。

    报表数据源名称必须与您通过 ReportDataSource 对象提供的名称匹配

    【讨论】:

    • no m 不能使用 sql bro m 使用来自 xml 的 xml 数据集填充和来自数据表的 xml 填充,我正在动态创建数据表列并给他值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    相关资源
    最近更新 更多