首页 > 解决方案 > Crystal Report ExportToStream 失败,对象引用未设置为实例

问题描述

我有一个非常简单的应用程序,它在尝试返回 PDF 时接受无参数。Crystal Reports 是使用 CR IX 编写的,我必须更新 Web 服务代码才能使用 Crystal Report for Visual Studio 13。我能够设置参数,以及能够登录并验证登录凭据是否正确。

public string TestReport()
{
    try
    {
        var p = new List<KeyValuePair<string, string>> {
            new KeyValuePair<string, string>("Product", "03R95-01"),
            new KeyValuePair<string, string>("Product_Rev", "E-V001")
        };

         var reportParameters = new ParameterField[2];

        var rpt = InitializeReport("testReport", p);
        var s = rpt.ExportToStream(ExportFormatType.PortableDocFormat);
        return "Stream exists";
   }
   catch (Exception ex)
   {
       return $"{ex.Message}|{ex.StackTrace}";
   }
}

初始化报告方法是:

private ReportDocument InitializeReport(string svrId, string reportName, List<KeyValuePair<string, string>> parameters)
{
    var uid = "userId";
    var pwd = "pwd";
    var svr = "serverId";
    var db = "DBNAME";

    var reportFolder = "c:\\CrystalTest\\ReportFolder";

    var reportFile = Path.Combine(reportFolder, $"{reportName}.rpt");
    var rpt = new ReportDocument
    {
        FileName = reportFile
    };
    rpt.Load(reportFile);

    var conInfo = new ConnectionInfo
    {
        UserID = uid,
        Password = pwd,
        ServerName = svr,
        DatabaseName = db
    };
    foreach (Table t in rpt.Database.Tables)
    {
        try
        {
            var loginInfo = t.LogOnInfo;
            loginInfo.ConnectionInfo = conInfo;
            t.ApplyLogOnInfo(loginInfo);
            if(!t.TestConnectivity())
            {
                throw new Exception($"{t.Name} failed login");
            }
        }
        catch (Exception ex)
        {
            throw;
        }
    }
    rpt.VerifyDatabase();

    return rpt;
}

我已验证当用户名/密码组合不正确时会引发错误。

运行此程序时出现以下错误。

对象引用未设置为对象的实例。| 在 CrystalDecisions.CrystalReports.Engine.FormatEngine.ExportToStream(ExportRequestContext reqContext) 在 CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToStream(ExportOptions options) 在 CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToStream(ExportFormatType formatType) 在 ICEWS4.maintenance.TestReport()在 C:\CrystalTest.cs:724 行

标签: oraclecrystal-reports

解决方案


我知道了修复。我有 VS 13 SP 29
的 CR。服务器上安装的运行时是 13 SP 23,SAP 告诉我更新到 SP 30。更新我的代码并安装运行时后,我能够根据需要导出为 PDF。


推荐阅读