2016-08-29 3 views
0

내가이 짓하는 실제 데이터 세트 파일이 : 내가 설정 한 CR 디자이너에서오류 수정 보고서 소스에 데이터 집합을 설정하려고 할 때

enter image description here

을하는이 같은 소스에 데이터 세트 :

document.SetDataSource(rv); 
:

enter image description here

나는 C# 코드에 직면하고있다 문제는이 라인에있다 나는 그 라인에 올 때

enter image description here

마지막으로, 나는이 오류 : 문서가 사전로드 된 CR 문서 및 RV입니다 691,363,210

그냥 언급 한 줄 앞에 다음과 같습니다 데이터 집합입니다. 도 예외가 발생하지 ...

enter image description here

는 사람이 좀 도와 줄래?

private void GenerateReport_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       CrystalDecisions.CrystalReports.Engine.ReportDocument document = null; 
       document = new CrystalDecisions.CrystalReports.Engine.ReportDocument(); 
       document.Load(@"C:\output\CrystalReportTest.rpt"); 

       DataTable dt = new DataTable(); 
       dt.Columns.Add("FirstName"); 
       dt.Columns.Add("LastName"); 
       dt.Columns.Add("State"); 
       dt.Columns.Add("Town"); 
       dt.Columns.Add("ID"); 

       dt.Rows.Add(new object[] { "James", "Bond", "England", "London", "1233428749020" }); 
       dt.Rows.Add(new object[] { "Rocky", "Balboa", "USA", "Los Angeles", "471998425060" }); 
       dt.Rows.Add(new object[] { "Keyser", "Soze", "Hungary", "Budapest", "3643428747898" }); 

       List<DataTable> ldt = new List<DataTable>(); 
       ldt.Add(dt); 


       System.Data.DataSet rv = new System.Data.DataSet(); 
       rv = AddTableInReportDataSet(ldt); 

       if (rv != null) 
       { 
        document.SetDataSource(rv); 
       } 
       document.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, @"C:\output\Export_Test.pdf"); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.ToString()); 

      } 
     } 

     private void SetMainReportDataSource(CrystalDecisions.CrystalReports.Engine.ReportDocument document, List<DataTable> tables) 
     { 
      if (tables.Count > 0) 
      { 
       DataSet reportDataSet = AddTableInReportDataSet(tables); 
       document.SetDataSource(reportDataSet); 
      } 
     } 

     private DataSet AddTableInReportDataSet(List<DataTable> tableList) 
     { 
      DataSet rv = new DataSet(); 
      tableList.ForEach(tbl => AddTableInReportDataSet(rv, tbl)); 
      return rv; 
     } 

     private void AddTableInReportDataSet(DataSet dataSet, DataTable table) 
     { 
      bool tableAlreadyAdded = dataSet.Tables.Cast<DataTable>().Where(tbl => tbl.TableName == table.TableName).Any(); 
      if (tableAlreadyAdded) 
      { 
       foreach (DataRow currentRow in table.Rows) 
       { 
        dataSet.Tables[table.TableName].ImportRow(currentRow); 
       } 
      } 
      else 
      { 
       dataSet.Tables.Add(table); 
      } 
     } 

UPDATE : 이것은 내가 내 응용 프로그램 설정 파일이 추가 내 문제 해결

:

<startup useLegacyV2RuntimeActivationPolicy="true"> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
    </startup> 

하지만 여전히, 내 보고서는

내 코드입니다 빈! 보여줄 것이 없다!

+0

내부 예외 및 라인은 무엇입니까? – Furtiro

+0

잘 모르겠습니다. 나는 아무것도 읽을 수 없다. @Furtiro –

+0

IoFilesNotFoundException, 그래서 당신이 document.exportToDisk 줄을 두 번 확인하고 여기에 경로를 확인하는 것이 좋습니다 – Furtiro

답변

1

테이블에 이름을 추가해보십시오. 템플릿에서 TestDataTable이라는 테이블을 사용하지만 데이터 세트에 그러한 테이블이 없습니다 (미리보기에는 이름이 Table1 인 것으로 나타남).

관련 문제