在水晶报表中设置相对路径

时间:2012-06-26 17:01:22

标签: c# crystal-reports

我写了以下代码,

CrystalDecisions.CrystalReports.Engine.ReportDocument report = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
report.Load(@"C:\Users\XXX\Desktop\Backup1\Project\ReportsFolder\ReportSalesInvoice.rpt");

报告适用于上面的代码但是我想给出一个相对路径,这样我就可以在不改变路径的情况下将它安装在多台机器上。 我也尝试了以下路径

string loc = AppDomain.CurrentDomain.BaseDirectory;
string loc2 = Application.StartupPath;
string loc3 = Application.UserAppDataPath;
string loc4 = Application.CommonAppDataPath;                

将它们用作,

report.Load(loc2 + "\\ReportSalesInvoice.rpt");

但无法访问该文件。请帮助。

2 个答案:

答案 0 :(得分:3)

尚未在Windows应用中测试,但这是我在MVC3中使用的。我相信相对路径必须在您的应用程序的根目录中

    using CrystalDecisions.CrystalReports.Engine;
    using CrystalDecisions.Shared;

    using (var report = new ReportClass { FileName = Server.MapPath("/AppName/Reports/MyReport.rpt") })
    {
        report.Load();
    ...

答案 1 :(得分:0)

private void Crystal_rpt()
{
  ReportDocument dir = new ReportDocument();
  dir = functions.Show_Crystal_rpt();
  dir.Load(Application.StartupPath + "\\rptObt_mark.rpt");
  crpMark_sheet.ReportSource = dir;
}