无法在不同的计算机上安装带有水晶报告的c#windows应用程序

时间:2017-10-10 02:40:27

标签: c# sql-server visual-studio crystal-reports

我使用c#构建windows应用程序并在其中包含水晶报告。

我的问题是我使用了加载crystalreport.rpt文件的代码来自我开发应用程序的计算机中的位置。

问题正好在这行代码中。

            cryRpt.Load("PUT CRYSTAL REPORT PATH HERE\CrystalReport1.rpt");

现在每当我尝试在不同的计算机上运行应用程序时,它都无法找到.rpt文件,我的报告也无法正常工作。

这是完整的代码。

using System;
using System.Windows.Forms;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        ReportDocument cryRpt = new ReportDocument();
        TableLogOnInfos crtableLogoninfos = new TableLogOnInfos();
        TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();
        ConnectionInfo crConnectionInfo = new ConnectionInfo();
        Tables CrTables ;

        cryRpt.Load("PUT CRYSTAL REPORT PATH HERE\CrystalReport1.rpt");

        crConnectionInfo.ServerName = "YOUR SERVER NAME";
        crConnectionInfo.DatabaseName = "YOUR DATABASE NAME";
        crConnectionInfo.UserID = "YOUR DATABASE USERNAME";
        crConnectionInfo.Password = "YOUR DATABASE PASSWORD";

        CrTables = cryRpt.Database.Tables ;
        foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in 
CrTables)
        {
            crtableLogoninfo = CrTable.LogOnInfo;
            crtableLogoninfo.ConnectionInfo = crConnectionInfo;
            CrTable.ApplyLogOnInfo(crtableLogoninfo);
        }

        crystalReportViewer1.ReportSource = cryRpt;
        crystalReportViewer1.Refresh(); 
    }
 }
}

如何让我的报告在任何计算机上运行?

1 个答案:

答案 0 :(得分:0)

您可以将app.config文件中的路径添加为密钥,并从代码

中调用它

OR

 System.Reflection.Assembly.GetExecutingAssembly()

OR

 System.IO.Path.GetFullPath