Crystal Report ExportToStream失败,对象引用未设置为实例



我有一个非常简单的应用程序,在尝试返回PDF时不接受任何参数。水晶报表是用crix编写的,我必须更新web服务代码才能在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}";
}
}

Initialize Report方法是:

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;
}

我已经验证了当userid/pass组合不正确时抛出错误。

当我运行这个时,我得到以下错误:

对象引用未设置为对象的实例。|在CrystalDecisions.CrystalReports.Engine.FormatEngine.ExportToStream (ExportRequestContextreqContext)CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToStream (ExportOptions选项)CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToStream (ExportFormatTypetestreport()在C: CrystalTest.cs: 724行

我知道了修复方法。我有VS 13 SP 29的CR。
服务器上安装的运行时是13 SP 23SAP让我升级到SP 30。在更新了我的代码并安装了运行时之后,我就能够按照我的要求导出到PDF格式了。

最新更新