如何从非绝对路径加载报表定义?

时间:2014-06-02 11:07:10

标签: c# crystal-reports

这是一个有效的代码

string connection = "Server=.\\sqlexpress;Database=dataSet_CrystalReport;Integrated Security=True;";
SqlConnection Con = new SqlConnection(connection);
string select = "SELECT * FROM tblAccountDetails";
SqlDataAdapter adapter = new SqlDataAdapter(select, Con);
DataSet dst = new DataSet();
adapter.Fill(dst, "tblAccountDetails");
crystalRep.Load(@"C:\Users\Boss\Desktop\dataCrystalReport_Experiment\dataCrystalReport_Experiment\CrystalReport1.rpt");
crystalRep.SetDataSource(dst);
crystalReportViewer1.ReportSource = crystalRep;

我想要的是这段代码可以工作:

string connection = "Server=.\\sqlexpress;Database=dataSet_CrystalReport;Integrated Security=True;";
SqlConnection Con = new SqlConnection(connection);
string select = "SELECT * FROM tblAccountDetails";
SqlDataAdapter adapter = new SqlDataAdapter(select, Con);
DataSet dst = new DataSet();
adapter.Fill(dst, "tblAccountDetails");
string filename = Path.GetFullPath("CrystalReport1.rpt");
crystalRep.Load(filename);                                // <-- Difference!
crystalRep.SetDataSource(dst);
crystalReportViewer1.ReportSource = crystalRep;

字符串文件名相当于第一个有效的代码 它有这样的路径:

  

C:\用户\老板\桌面\ dataCrystalReport_Experiment \ dataCrystalReport_Experiment \ CrystalReport1.rpt

我不知道为什么它无法加载报告?

1 个答案:

答案 0 :(得分:0)

Path.GetFullPath方法不会“只是”在任何地方为您找到该文件。根据应用程序的工作目录,这可能有效或无效。 (在这种情况下,文件必须在工作目录中才能使调用工作)

通常,您为Path.GetFullPath提供相对文件名,该方法会为您返回完整的文件名。

在Visual Studio中包含该报表,并告诉它将其复制到输出目录。然后,您只能使用文件名引用它。无需路径。