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

本文关键字:路径 加载 报表 定义 | 更新日期: 2023-09-27 18:06:16

下面是一段有效的代码

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;

字符串filename相当于第一个有效的代码。
它的路径是这样的:

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

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

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

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

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

在Visual Studio中包含报告并告诉它将其复制到输出目录。然后,您可以仅使用文件名引用它。不需要路径