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



下面是一段有效的代码

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:UsersBossDesktopdataCrystalReport_ExperimentdataCrystalReport_ExperimentCrystalReport1.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中包含报告并告诉它将其复制到输出目录。然后,您可以仅使用文件名引用它。不需要路径

最新更新