:
connect();
sql = "select INVOICE.[InvoiceNo], [InvoiceDate],[CustId],Subtotal,Pid,Qty ,Rate,amount from INVOICE inner join invoicedetails on INVOICE.[InvoiceNO]= invoicedetails.[InvoicoNo] where invoicedetails.[InvoicoNo] = '" + INVID+ "' ";
objcmd = new SqlCommand(sql, objcon);
objda.SelectCommand = objcmd;
Mydataset.Clear();
objda.Fill(Mydataset "dis");
path.Load(Application.StartupPath + "C:\\Report_InvoiceRPT.rpt");
path.SetDataSource(Mydataset.Tables["dis"]);
crystalReportViewer1.ReportSource = path;
crystalReportViewer1.RefreshReport();
次は私にエラーを与えているラインであります
Application.StartupPath + "C:\\Report_InvoiceRPT.rpt"
とどのようなパスがありますか? このパスは存在しません。アプリケーションの起動パスをハードコーディングされたファイルパスC:\\Report_InvoiceRPT.rpt
と連結しています。
常に2つの文字列のパスを組み合わせることPath.Combine()
を使用しています。 Path.Combine()
は、セパレータを複製しないように最初のパスが最後にセパレータを既に持っているかどうかをチェックするので、この方法で二重パスセパレータを避けることができます。さらに、結合するパス要素に無効な文字が含まれているかどうかを確認します。
追加のチェックFile.Exists()
は、アプリケーションをより堅牢にするだけです。