Windows窗体加载报告失败

时间:2014-04-14 14:00:28

标签: vb.net winforms crystal-reports

我正在使用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()

2 个答案:

答案 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
相关问题