以下是相关信息:
- Windows 10 64位
- 已安装Crystal Reports
尝试安装了最新版13.0.20并重启电脑,但仍然不起作用。
- 应用程序目标框架为4.6.2(我甚至尝试了4.0,但仍然出现相同的错误)
- 使用Visual Studio 2017 Community(也尝试过VS 2015)
- 平台为x64(而非AnyCPU)
- 报告通过传递DataTable生成,没有活动连接或ConnectionString在报告中
- 错误消息如下
修改 # 1
修改 # 2
显示报告的源代码如下:
CrystalDecisions.CrystalReports.Engine.ReportClass c = new
CrystalDecisions.CrystalReports.Engine.ReportClass();
c.FileName = System.IO.Path.Combine(Root_Path,
"Reports", "Prod", mFileName);
c.Load();
c.SetDataSource(dt); // dt => DataTable
c.SetParameterValue("prmSystemDate", Current_Date);
frmReportViewer v = new frmReportViewer();
v.ReportClass = c;
v.Show();
frmReportViewer的FormLoad事件是:
private void frmReportViewer_Load(object sender, EventArgs e)
{
CRViewer.ReportSource = ReportClass;
//CRViewer =>
//CrystalDecisions.Windows.Forms.CrystalReportViewer
}
我哪里出错了吗?
编辑 #3
x86和x64上的DataTable是相同的。(将datatables保存为xml文件,两个文件完全相同)。
Process Monitor显示我的程序在以下文件上执行了CreateFile
操作:
C:\WINDOWS\Microsoft.Net\assembly\GAC_64\CrystalDecisions.Web\v4.0_13.0.2000.0__692fbea5521e1304\CrystalDecisions.Web.dll C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\CrystalDecisions.Web\v4.0_13.0.2000.0__692fbea5521e1304\CrystalDecisions.Web.dll C:\WINDOWS\Microsoft.Net\assembly\GAC\CrystalDecisions.Web\v4.0_13.0.2000.0__692fbea5521e1304\CrystalDecisions.Web.dll C:\WINDOWS\assembly\GAC_64\CrystalDecisions.Web\13.0.2000.0__692fbea5521e1304\CrystalDecisions.Web.dll
所有失败的结果都是PATH NOT FOUND
。它成功地运行在
C:\Windows\assembly\GAC_MSIL\CrystalDecisions.Web\13.0.2000.0__692fbea5521e1304\CrystalDecisions.Web.dll
然后同一文件发生了两次BUFFER OVERFLOW
。
这只发生在x64上。在x86上没有与CrystalDecisions.Web.dll
相关的操作。
这表示什么?
DataSource
的?你是否尝试仅传递DataSet
而不是DataTable
对象? - Oceans