【问题标题】:Crystal Reports exception when calling ExportToDisk调用 ExportToDisk 时的 Crystal Reports 异常
【发布时间】:2015-04-06 23:55:42
【问题描述】:

Crystal Reports(随 Visual Studio 2008 分发的版本)出现了一些奇怪的行为。我可以正常查看报告,但尝试使用ExportToDisk 失败,出现以下异常:

CrystalDecisions.CrystalReports.Engine.InvalidArgumentException:

无法打印此组部分 因为它的条件字段是 不存在或无效。格式化 部分以选择另一个条件 场地。文件错误 C:\DOCUME~1\gbuehler\LOCALS~1\Temp\Report {2FD9516D-0FD4-4D20-A326-D21EB762EB9E}.rpt: 无效的组条件。 ---> System.Runtime.InteropServices.COMException (0x8000020B):

无法打印此组部分 因为它的条件字段是 不存在或无效。格式化 部分以选择另一个条件 场地。文件错误 C:\DOCUME~1\developer\LOCALS~1\Temp\Report {2FD9516D-0FD4-4D20-A326-D21EB762EB9E}.rpt: 无效的组条件。在 CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass.Export(ExportOptions pExportOptions,请求上下文 pRequestContext) 在 CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext) --- 内部结束 异常堆栈跟踪 --- 在 CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(异常 吃 CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext) 在 CrystalDecisions.CrystalReports.Engine.FormatEngine.ExportToStream(ExportRequestContext reqContext) 在 CrystalDecisions.CrystalReports.Engine.FormatEngine.Export(ExportRequestContext reqContext) 在 CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToDisk(ExportFormatType 格式类型,字符串文件名)在 LSPayroll.MainForm.btnSendCanadian_Click(对象 发件人,EventArgs e) 在 C:\Documents 和设置\开发者\我的 文档\Visual Studio 2008\Projects\MyProject\MyProject\MainForm.cs:line 277

粗略搜索Invalid Group Condition 会返回正在寻找解决方案和建议以重新创建报告的其他用户。谁能给出一个合理的理由,为什么报告可以正常查看,但是ExportToDisk 失败并出现异常?

不确定是否有帮助,但这是我用来创建报告文档和导出的代码:

// build a crystal reports document in memory and use the crystal 
// reports library to export as a PDF
ReportDocument reportDocument = new ReportDocument();
reportDocument.Load(reportPath);
reportDocument.SetDataSource(data);
reportDocument.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, "payroll.pdf");

【问题讨论】:

    标签: exception crystal-reports


    【解决方案1】:

    努力寻找解决这个问题的方法

    对我有用的解决方案

    在声明中

    reportDocument.SetDataSource(data);
    

    确保“数据”是对 DataSet 而不是 DataTable 的引用。

    【讨论】:

      【解决方案2】:

      我正在使用 DataTable,它工作正常:

      public ActionResult ReporteUsuarios() {
              DataTable dt = new DataTable();
              try {
                  SqlConnection con = (SqlConnection)seguridad.Database.Connection;
                  con.Open();
                  SqlCommand cmd = new SqlCommand("select nombre from usuarios", con);
                  SqlDataAdapter adp = new SqlDataAdapter(cmd);
                  adp.Fill(dt);
                  con.Close();
              } catch (Exception ex) {
                  throw new HttpException(500, "Hubo un problema con la base de datos. " + ex.StackTrace.ToString());
              }
      
              ReportClass rpt = new ReportClass();
              rpt.FileName = Server.MapPath("/Reports/Usuarios.rpt");
              rpt.Load();
              rpt.SetDataSource(dt);
      
              Stream stream = rpt.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
              return File(stream, "application/pdf", "Usuarios.pdf");
          }
      

      【讨论】:

        猜你喜欢
        • 2011-06-19
        • 1970-01-01
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-26
        相关资源
        最近更新 更多