Exception 调用ExportToDisk时Crystal报告异常
我在Crystal Reports(随Visual Studio 2008发布的版本)中遇到了一些奇怪的行为。我可以正常查看报告,但尝试使用Exception 调用ExportToDisk时Crystal报告异常,exception,crystal-reports,Exception,Crystal Reports,我在Crystal Reports(随Visual Studio 2008发布的版本)中遇到了一些奇怪的行为。我可以正常查看报告,但尝试使用ExportToDisk失败,出现以下异常: CrystalDecisions.CrystalReports.Engine.InvalidArgumentException: 无法打印此组节 因为它的条件字段是 不存在的或无效的。格式化 节来选择另一个条件 领域文件错误 C:\DOCUME~1\gbuehler\LOCALS~1\Temp\Report {2
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.Controller.ReportSourceClass.Export(导出选项
pExportOptions,RequestContext
前传(上下文)
CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext
reqContext)--内循环结束
异常堆栈跟踪---在
CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(异常
e) 在
CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext
(上下文)在
CrystalDecisions.CrystalReports.Engine.FormatEngine.ExportToStream(ExportRequestContext
(上下文)在
CrystalDecisions.CrystalReports.Engine.FormatEngine.Export(ExportRequestContext
(上下文)在
CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToDisk(ExportFormatType
formatType,字符串文件名)位于
LSPayroll.MainForm.btnsendcanada\u单击(对象
C:\Documents中的发件人、事件参数(e)
和设置\developer\My
文档\ Visual Studio
2008\Projects\MyProject\MyProject\MainForm.cs:line
277
粗略搜索无效组条件
将返回其他用户,他们正在寻找解决方案和建议以重新创建报告。是否有人能给出报告可以正常查看,但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");
努力找到解决这个问题的办法 对我有效的解决方案 在声明中
reportDocument.SetDataSource(data);
确保“数据”是对数据集的引用,而不是数据表。我使用的是数据表,它工作正常:
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");
}