oracle - 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 行
解决方案
我知道了修复。我有 VS 13 SP 29
的 CR。服务器上安装的运行时是 13 SP 23,SAP 告诉我更新到 SP 30。更新我的代码并安装运行时后,我能够根据需要导出为 PDF。
推荐阅读
- rx-swift - RxSwift:如何将 Bool 更改为 ObservableType?
- macos - 如何使用 Homebrew 在 macOS Catalina (10.15) 上安装 Valgrind?
- assembly - 在 GDB 下运行时,来自炸弹实验室的“初始化错误:在非法主机上运行 [2]”?
- python - 如何在不使用列表的情况下在 Python 中找到最小值和最大值
- r - R函数来分隔不等宽的字符
- php - 下载-process.php 重定向页面
- programming-languages - 您如何将运算符的操作顺序集成到编程语言的解析器中
- react-native - 如何使用 Axios 在 React Native 中访问 Google Places API Next Page Token?
- html - 制作带边框的框,在html中划分
- python - 熊猫数据框的 StandardScaler ValueError 错误