代码之家  ›  专栏  ›  技术社区  ›  Ryan Taylor

ParameterFieldCurrentValueException数据未与报表一起保存并导出为PDF时发生异常

  •  2
  • Ryan Taylor  · 技术社区  · 16 年前

    我有一份用Crystal Reports 2008创建的报告。此报表最多使用40个参数来控制报表的布局。所有参数都是布尔值,在保存的报告中默认为False。使用“使用报告保存数据”选项保存报告 未经检查 因为我想从数据库而不是在报告中读取结果。

    但是,当我将报告导出为PDF时,会收到一个ParameterFieldCurrentValueException。当数据与报告一起保存时,我没有收到此错误。

    我已经用以下代码验证了报告中的所有五个表都连接到了它们的数据源。

    foreach (Table table in reportDoc.Database.Tables)
    {
       bool isConnected = table.TestConnectivity();
       Console.WriteLine(table.Name + " connected? " + isConnected.ToString());
    }
    

    这是可以重现此问题的最简单代码。

    string report =  "list_report.rpt";
    string pdf = "list_report.pdf";
    
    ReportDocument reportDoc = new ReportDocument();
    reportDoc.Load(report);
    
    // Setting parameters (or not) does not have an effect on the error
    // All parameters have defaults
    // reportDoc.SetParameterValue("hideRegion", false);
    
    reportDoc.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, pdf);
    
    3 回复  |  直到 16 年前
        1
  •  4
  •   Dan Kelleher Dan Kelleher    16 年前

    该错误表明,您在运行时传递的一个或多个参数值与报表预期值不匹配。在代码中,您将直接导出为PDF。由于您没有查看报告,因此引擎没有机会提示缺少的值。

    您可以构建一个简单的windows应用程序,加载报表并将其传递给Crystal report Viewer控件。首先,在没有保存数据的情况下,不要向报表传递任何参数。应提示您输入所有参数。在参数提示窗体中手动添加它们。这行吗?应该这样。现在开始一次添加一个参数代码。参数提示窗体应该只提示缺少的参数。在某个时候,您将再次遇到错误,这将有助于缩小问题的范围。

    真诚地

    丹·凯勒赫

        2
  •  1
  •   Ryan Taylor    16 年前

    SAP Forum 答案是:

    点击数据库。这是一个静态报告 您尝试传递参数。

    正在传递的参数值 与报告内容不匹配 期望。既然你不看 发动机停止运转以提示丢失 价值观

    加载报告的应用程序。 首先不要将任何参数传递给 没有保存数据的报表。你 应提示您输入所有 参数提示窗体。这行吗? 应该这样。现在开始添加参数 一次编码一个。参数 提示窗体应该只提示 缺少的参数。有时 点你会再次得到错误并且 这将有助于缩小范围 问题

    然后我将报告加载到Crystal report Viewer控件中。加载时,它会提示我输入任何缺少的参数。我在40多个参数的列表中遗漏了一个参数,这导致了错误。其代码如下:

    ReportDocument reportDoc = new ReportDocument();
    reportDoc.Load(")list_report.rpt";
    Form1.SetParameterValues(reportDoc);
    
    this.crystalReportViewer1.ReportSource = reportDoc;
    

        3
  •  0
  •   Philippe Grondier    16 年前

    这个问题不容易解决!

    保存之前为所有参数提供默认值怎么样?你也会犯同样的错误吗?如果没有,那么您必须逐一尝试,以找到导致故障的原因。我想你会以公式中使用的参数值结束。。。