将静态Crystal报表文件转换为PDF时出现错误"缺少参数值"

2020-09-03 19:52发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,

.rpt文件版本:

希捷信息桌面7

当前开发环境:

Windows 7(操作系统)

Visual Studio 2010(最终版)

.Net Framework 4的SAP Crystal Report运行时

Visual Studio 2010的Crystal Report加载项

问题陈述:

我在(Seagate Info Desktop 7)中生成了Crystal Report文件(.rpt),需要将其转换为PDF文件。 尝试以下代码段将其转换为PDF文件。

代码段:

ReportDocument cryRpt =新的ReportDocument();

cryRpt.Load(@" D:\〜CIHRI78.RPT");

尝试

{

ExportOptions CrExportOptions;

DiskFileDestinationOptions CrDiskFileDestinationOptions = new DiskFileDestinationOptions();

PdfRtfWordFormatOptions CrFormatTypeOptions = new PdfRtfWordFormatOptions();

CrDiskFileDestinationOptions.DiskFileName = @" D:\〜 CIHRI78.pdf ";

CrExportOptions = cryRpt.ExportOptions;

{

CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;

CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;

CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;

CrExportOptions.FormatOptions = CrFormatTypeOptions;

}

cryRpt.Export(); //<-这里引发异常。

cryRpt.Close();

cryRpt.Dispose();

}

最终

{

cryRpt = null;

CrExportOptions = null;

CrDiskFileDestinationOptions = null;

CrFormatTypeOptions = null;

}

异常详细信息:

HasRecords ='cryRpt.HasRecords'引发了类型为'CrystalDecisions.CrystalReports.Engine.ParameterFieldCurrentValueException'的异常

{CrystalDecisions.CrystalReports.Engine.ParameterFieldCurrentValueException:缺少参数值。 ---> System.Runtime.InteropServices.COMException(0x8004100E):缺少参数值。

在CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass.Export(ExportOptions pExportOptions,RequestContext pRequestContext)

在CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext)

---内部异常堆栈跟踪的结尾---

在CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(Exception e)

在CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext)

在CrystalDecisions.CrystalReports.Engine.FormatEngine.ExportToStream(ExportRequestContext reqContext)

在CrystalDecisions.CrystalReports.Engine.FormatEngine.Export(ExportRequestContext reqContext)

在CrystalDecisions.CrystalReports.Engine.FormatEngine.Export()

在CrystalDecisions.CrystalReports.Engine.ReportDocument.Export()

在JoaoLivio.RPToCSV.Form1.Form1_Load(对象发送者,EventArgs e),位于D:\ WorkingFolder \ SeagateReports \ ConvertPDF.cs:line 83}

其他观察结果:

在"信息分析器"的"测试服务器"中打开相同的.rpt文件时,将打开该文件,在报告中显示数据。 当我尝试用C#代码打开/或在Visual Studio中打开并在"预览"模式下查看时,同一个文件要求提供一些参数。

请帮助我找出我不正确的地方。

谢谢

Gokul

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,

.rpt文件版本:

希捷信息桌面7

当前开发环境:

Windows 7(操作系统)

Visual Studio 2010(最终版)

.Net Framework 4的SAP Crystal Report运行时

Visual Studio 2010的Crystal Report加载项

问题陈述:

我在(Seagate Info Desktop 7)中生成了Crystal Report文件(.rpt),需要将其转换为PDF文件。 尝试以下代码段将其转换为PDF文件。

代码段:

ReportDocument cryRpt =新的ReportDocument();

cryRpt.Load(@" D:\〜CIHRI78.RPT");

尝试

{

ExportOptions CrExportOptions;

DiskFileDestinationOptions CrDiskFileDestinationOptions = new DiskFileDestinationOptions();

PdfRtfWordFormatOptions CrFormatTypeOptions = new PdfRtfWordFormatOptions();

CrDiskFileDestinationOptions.DiskFileName = @" D:\〜 CIHRI78.pdf ";

CrExportOptions = cryRpt.ExportOptions;

{

CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;

CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;

CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;

CrExportOptions.FormatOptions = CrFormatTypeOptions;

}

cryRpt.Export(); //<-这里引发异常。

cryRpt.Close();

cryRpt.Dispose();

}

最终

{

cryRpt = null;

CrExportOptions = null;

CrDiskFileDestinationOptions = null;

CrFormatTypeOptions = null;

}

异常详细信息:

HasRecords ='cryRpt.HasRecords'引发了类型为'CrystalDecisions.CrystalReports.Engine.ParameterFieldCurrentValueException'的异常

{CrystalDecisions.CrystalReports.Engine.ParameterFieldCurrentValueException:缺少参数值。 ---> System.Runtime.InteropServices.COMException(0x8004100E):缺少参数值。

在CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass.Export(ExportOptions pExportOptions,RequestContext pRequestContext)

在CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext)

---内部异常堆栈跟踪的结尾---

在CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(Exception e)

在CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext)

在CrystalDecisions.CrystalReports.Engine.FormatEngine.ExportToStream(ExportRequestContext reqContext)

在CrystalDecisions.CrystalReports.Engine.FormatEngine.Export(ExportRequestContext reqContext)

在CrystalDecisions.CrystalReports.Engine.FormatEngine.Export()

在CrystalDecisions.CrystalReports.Engine.ReportDocument.Export()

在JoaoLivio.RPToCSV.Form1.Form1_Load(对象发送者,EventArgs e),位于D:\ WorkingFolder \ SeagateReports \ ConvertPDF.cs:line 83}

其他观察结果:

在"信息分析器"的"测试服务器"中打开相同的.rpt文件时,将打开该文件,在报告中显示数据。 当我尝试用C#代码打开/或在Visual Studio中打开并在"预览"模式下查看时,同一个文件要求提供一些参数。

请帮助我找出我不正确的地方。

谢谢

Gokul

付费偷看设置
发送
4条回答
渐行渐远_HoldOn
1楼 · 2020-09-03 20:27.采纳回答

在WIKI页面上,我有一个参数测试应用程序,尝试一下。

https: //wiki.scn.sap.com/wiki/display/BOBJ/Crystal+Reports%2C+Developer+for+Visual+Studio+Downloads

Don

nice_wp
2楼-- · 2020-09-03 20:54

由于报表包含参数,因此您必须将参数值传递给代码。

您可以通过打开以下代码来检查参数类型 在CR设计器中创建报表并编辑参数。

还要检查是否已为此报表选中"使用报表保存数据"选项。

您可以通过开发一个 示例应用程序只是为了加载和查看报告。

报告首先提示输入参数值,然后可以从查看器中导出它。

使用代码遵循相同的工作流程 ,传递数据库登录信息,输入参数值,然后导出/查看/打印报告。

谢谢

Bhushan。

Aaron 3364
3楼-- · 2020-09-03 20:54

嗨 Gokul,


感谢您提供详细的信息。

您所说的"报表在尝试查看时会提示输入参数",这意味着报表中包含的参数值 应该提供。

由于报表无法填充参数,因此代码在导出时失败

看看示例应用程序,以通过代码将参数值传递给报表。

http://www.sdn.sap.com/irj/boc/samples?rid=/library/uuid/ 5050d3d0-19dd-2d10-ffb2-ddcd30a3e655

首先,将参数值传递给报表,然后将其导出。

谢谢,
Bhushan

骆驼绵羊
4楼-- · 2020-09-03 20:47

如何通过代码将参数值传递给报表。

我无法访问给定的链接

请协助

一周热门 更多>