2012-06-26 6 views
2

,나는 다음과 같은 코드를 작성했습니다

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"); 

그러나 파일은 도움말을 accessed.Please 할 수 없습니다 노력했다.

+0

무엇 Environment.CurrentDirectory''에 대한 생각 응용 프로그램의 루트 내에 있어야한다 생각? 일반적으로 상대 파일을위한 기본 파일입니다. –

+0

'파일에 액세스 할 수 없습니다'라는 의미는 무엇입니까? Load()를 시도 할 때 예외가 발생합니까? – ScottieMc

+0

항상 프로젝트에 보고서를 추가하여 솔루션에 항상 통합되고 더 많은 "예외 안전"이되도록하십시오. 이것은 쓸데없는 외부 경로에서로드 할 필요성을 만듭니다. – Urik

답변

3

Windows 응용 프로그램에서는 테스트하지 않았지만 이것이 MVC3에서 사용하는 것입니다. 나는 상대 경로가

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

    using (var report = new ReportClass { FileName = Server.MapPath("/AppName/Reports/MyReport.rpt") }) 
    { 
     report.Load(); 
    ... 
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; 
} 
관련 문제