我正在使用Visual Studio 2010和framework 4.0开发Windows窗体应用程序。我有很多关于此应用程序将使用的报告。
我的解决方案分为多个文件夹,以便我可以保持文件的整理。我在一个文件夹中有一个进程正在尝试加载位于另一个文件夹中的Crystal Report。
当我尝试加载报告文件时,出现错误"加载报告失败"。 Google搜索表示无法找到该文件,或者该文件夹无权访问该文件。由于这是一个WinForms应用程序,我不认为权限与错误有任何关系,因为此应用程序及其所有文件夹都包含在整个程序集中。我已经尝试过 - 在调试模式下 - 使用差异文件命名来包含文件夹,使用我能想到的几乎所有组合,但无济于事。
我看不出错误发生的原因。有线索吗?
Dim rpt As New ReportDocument
With rpt
.Load("Form1500_0212.rpt")
.SetParameterValue(0, bID)
.SetParameterValue(1, ProviderID)
.VerifyDatabase()
End With
Dim frm As New frmViewReport()
frm.ShowDialog()
答案 0 :(得分:1)
为什么会发生这种情况有很多可能性。
首先,尝试为此行代码指定完整的文件路径
.Load("fullfilepath")
'e.g., "C:\EmailSys-Phase2\Code\EmailSystem1\xtalReport.rpt"
第二,您是否安装了水晶报告的运行时间?你可以得到它here
第三,您是否尝试在app.config
文件中添加此内容?
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
第四,尝试检查您的target framework
是否设置为.NET Framework 4.0
而不是 .NET Framework 4.0 Client Profile
(我认为您已经完成此步骤了)
答案 1 :(得分:0)
我还发现你需要更改&#34;复制到输出目录&#34;需要设置为&#34;始终复制&#34;以便报告定义在可执行路径中可用。现在我的代码适用于此
With rpt
.Load(Application.StartupPath + "\Form1500_0212.rpt")
.SetParameterValue(0, bID)
.SetParameterValue(1, ProviderID)
End With