Crystal 调用 ExportToDisk 时报告异常

问题描述 投票:0回答:2

我在使用 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) --- 内部结束 异常堆栈跟踪 --- at CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(异常 吃 CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext 请求上下文)在 CrystalDecisions.CrystalReports.Engine.FormatEngine.ExportToStream(ExportRequestContext 请求上下文)在 CrystalDecisions.CrystalReports.Engine.FormatEngine.Export(ExportRequestContext 请求上下文)在 CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToDisk(ExportFormatType 格式类型,字符串文件名)位于 LSPayroll.MainForm.btnSendCanadian_Click(对象 发送者、EventArgs e) 在 C:\Documents 中 和设置\开发人员\我的 文档\Visual Studio 2008\Projects\MyProject\MyProject\MainForm.cs:行 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
2个回答
0
投票

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

对我有用的解决方案

在声明中

reportDocument.SetDataSource(data);

确保“数据”是对数据集而不是数据表的引用。


0
投票

我正在使用 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");
    }
© www.soinside.com 2019 - 2024. All rights reserved.