【发布时间】:2017-11-02 05:08:03
【问题描述】:
我的报告在 32 位计算机上运行良好,但无法在 64 位计算机上打开。需要 64 位,因为在其中一个屏幕上加载数据会导致内存问题 - 所以它不能在 32 位上工作。
- Windows 10 64 位
- 已安装 Crystal Reports 已尝试安装 13.0.20(最新)并重新启动 PC,但没有成功。
- Application Target Framework 4.6.2(我什至在 4.0 上试过,但同样的错误)
- 使用 Visual Studio 2017 社区(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 是相同的。 (将数据表保存在xml中,两个文件完全相同)。
进程监视器显示我的程序对以下文件执行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相关的操作。
它表示什么?
【问题讨论】:
-
@Alejandro-2988924 配置中的引用设置已经存在。
-
它是否在 32 位中工作(内存问题)?您的数据集中是否有一些非标准列(如 blob)?
-
@reckface 是的,它在 32 位上工作,我可以看到报告。没有非标准列,只有日期、字符串、数字
-
对于它的价值(从 SP 20 开始)SAP 还不支持 VS 2017。他们说有些事情可能会奏效,比如打开一个现有项目。你在 VS 2015 中试过吗?
标签: c# crystal-reports 64-bit desktop-application .net-4.6.2