【问题标题】:VB.NET Winforms render report as pdf giving "Error occurred during local report processing"VB.NET Winforms 将报告呈现为 pdf,给出“本地报告处理期间发生错误”
【发布时间】:2015-06-10 22:22:42
【问题描述】:

您好,我只是想在 VB.NET 中进行全面报告。

报告视图预览工作正常,因此报告本身似乎没有问题,但呈现为 pdf 时给出“本地报告处理期间发生错误”,内部异常给出“报告处理期间发生错误” "

我显然错过了一些东西,但看不到什么。 如果有人可以帮助阐明这一点,将不胜感激。

Private Sub ExportToPDFToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExportToPDFToolStripMenuItem1.Click
        Try
            Dim viewer As New Microsoft.Reporting.WinForms.ReportViewer
            Dim report = New Microsoft.Reporting.WinForms.LocalReport
            viewer.LocalReport.ReportEmbeddedResource = "ECUWMS.10day.rdlc"
            viewer.ProcessingMode = ProcessingMode.Local


            Dim rpJob As New ReportParameter
            rpJob.Name = "JobNo"
            rpJob.Values.Add("0000030")
            viewer.LocalReport.SetParameters(New ReportParameter() {rpJob})
            viewer.RefreshReport()

            Dim reportinfo As Byte() = viewer.LocalReport.Render("PDF") ' --> Errors here.

            Dim SFD As New SaveFileDialog
            SFD.Filter = "PDF Files(*.PDF) | *.pdf"
            If SFD.ShowDialog() = Windows.Forms.DialogResult.OK Then
                Dim newfile As New FileStream(SFD.FileName, FileMode.Create, FileAccess.Write)
                newfile.Write(reportinfo, 0, reportinfo.Length)
                newfile.Close()

            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK)

        End Try

    End Sub

【问题讨论】:

  • 你可以有各种级别的异常:看看 ex.Message、ex.InnerException.Message、ex.InnerException.InnerException.Message 等等。
  • 谢谢,innerException.InnerException.Message 只是说“dsJobs”,这是我编写报告时创建的数据集的名称。调用 refreshReport 会触发数据集的加载吗?

标签: winforms pdf rdlc


【解决方案1】:

按照ex.InnerException.InnerException.Message 中的“建议”,您需要向您的LocalReport 提供一个名为dsJobsReportDataSource

【讨论】:

    【解决方案2】:

    感谢您的帮助。我认为这已经接近完成,我也喜欢能够将过滤移动到数据集而不是报告的想法。 沙盒的东西似乎是一个陷阱。不清除此 VS 会引发异常。 只需更改 sfd 和输出,此逻辑也适用于 Excel 和 Word。

    如果对某人有帮助,这里有一些代码

    Private Sub ExportToPDFToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExportToPDFToolStripMenuItem1.Click
        Dim viewer As New Microsoft.Reporting.WinForms.ReportViewer
        Dim report = New Microsoft.Reporting.WinForms.LocalReport
        Try
            Me.Tblsop_hTableAdapter.Fill(Me.SqlecuDataSet.tblsop_h)
    
            viewer.LocalReport.ReportEmbeddedResource = "ECUWMS.10day.rdlc"
            viewer.ProcessingMode = ProcessingMode.Local
            viewer.LocalReport.Refresh()
    
            Dim dsJobs As New sqlecuDataSet
            Dim ta As sqlecuDataSetTableAdapters.tblsop_hTableAdapter = Tblsop_hTableAdapter
            ta.Fill(dsJobs.tblsop_h)
            Dim repData As New ReportDataSource
            repData.Name = "dsjobs"
            repData.Value = dsJobs.tblsop_h
            viewer.LocalReport.DataSources.Clear()
            viewer.LocalReport.DataSources.Add(repData)
    
            Dim rpJob As New ReportParameter
            rpJob.Name = "JobNo"
            rpJob.Values.Add("0000030")
            viewer.LocalReport.SetParameters(New ReportParameter() {rpJob})
            viewer.RefreshReport()
            Dim reportinfo As Byte() = viewer.LocalReport.Render("PDF")
    
            Dim SFD As New SaveFileDialog
            SFD.Filter = "PDF Files(*.PDF) | *.pdf"
            If SFD.ShowDialog() = Windows.Forms.DialogResult.OK Then
                Dim newfile As New FileStream(SFD.FileName, FileMode.Create, FileAccess.Write)
                newfile.Write(reportinfo, 0, reportinfo.Length)
                newfile.Close()
    
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK)
            MessageBox.Show(ex.InnerException.Message, "Error", MessageBoxButtons.OK)
            MessageBox.Show(ex.InnerException.InnerException.Message, "Error", MessageBoxButtons.OK)
    
    
        End Try
        Viewer.LocalReport.ReleaseSandboxAppDomain()
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多