1

我有一个WPF计费解决方案,使用ClickOnce为500多个用户部署,CrystaReports2010用于报告,85%的用户在他们的机器上安装WindowsXP :(Crystal Reports 2010报告无法加载一旦报告导出为任何格式在WindowsXP

Crystal Reports在WindowsXP计算机上工作得很好,直到用户使用Crystal Reports Viewer中的内置导出按钮导出报表为止,如果他这样做了导出过程才能成功完成但他不能在解决方案中打开任何其他报告,直到他重新启动应用程序。

Export Button

这是尝试导出后打开一个新的报表时出现错误:

The Error Message

我保存在我的解决方案在应用程序.exe文件之外的内容外部资源的报告,我对他们加载需求是这样的:

var report = new ReportDocument(); 
report.Load(@"Reports\MyReport.rpt"); 

我确信,在用户关闭后的报告,关闭和报表文档对象的处理,所以没有内存泄漏或超过的开放报告的最大数量。

如果我更改了我的实现,以便将报表内容作为嵌入式资源保存在解决方案中,问题就解决了,但这不是一种选择,因为报表的大小相对较大(200KB-450KB),它将会一个很大的DLL文件,只要我们发布一个对任何报告有任何改变的新版本,就会通过ClickOnce下载到客户端!另一种变化是将每个人的四个报告分组为一个DLL,并且仍然是同样的问题(1MB-2MB仍然是一个大块)。了解到我们有很多报告,并且根据客户政策的变化,我们会频繁更改这些报告。请帮忙!

回答

1

最后,我找到了解决方案:) 问题在于,当您使用Crystal Reports查看器提供的默认导出按钮导出Crystal Report时,导出按钮会将应用程序的当前工作目录更改为导出位置!!! (奇怪的行为!),这就是为什么下面的行不会再工作:

report.Load(@"Reports\MyReport.rpt"); 

所以我改变了这条线以下:

report.Load(AppDomain.CurrentDomain.BaseDirectory + "\\" + @"Reports\MyReport.rpt"); 

和它的工作就像魔术:)

1

要解决此问题,必须将客户端计算机上安装的.net版本从客户端配置文件更改为完整的.net版本。

+0

我安装了完整的.net framework 4.0版本,但问题仍然存在。 – 2012-01-17 11:53:48

1

您是否在完成报告文档后关闭并处理它们?

+0

是的,我关闭报告并在完成显示后处置它。 – 2012-04-19 06:04:42

相关问题