2013-08-26 6 views
0

크리스탈 리포트의 한 번의 클릭으로 특정 클래스의 모든 학생의 마크 시트를 생성/인쇄합니다. 내가 루프에 사용크리스탈 리포트를 루프로 출력하기

다음은 보고서의 마지막 레코드/페이지를 보여줍니다.

내 코드는

입니다

개인 무효 btnGenerate_Click (개체 보낸 사람, EventArgs입니다 전자) {

 try 
     { 
      axCrystalActiveXReportViewer1.ReportSource = null; 

      ReportDocument cryRpt = new ReportDocument(); 
      TableLogOnInfos crtableLogoninfos = new TableLogOnInfos(); 
      TableLogOnInfo crtableLogoninfo = new TableLogOnInfo(); 
      ConnectionInfo crConnectionInfo = new ConnectionInfo(); 
      Tables CrTables; 


      crConnectionInfo.ServerName = Configuration.ServerName; 
      crConnectionInfo.DatabaseName = Configuration.DataBaseName; 
      crConnectionInfo.UserID = Configuration.Server_userName; 
      crConnectionInfo.Password = Configuration.Server_password; 



      CrTables = cryRpt.Database.Tables; 
      foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables) 
      { 
       crtableLogoninfo = CrTable.LogOnInfo; 
       crtableLogoninfo.ConnectionInfo = crConnectionInfo; 
       CrTable.ApplyLogOnInfo(crtableLogoninfo); 
      } 

      for(int i=0; i<=x; i++) 
      { 
       DataSet ds_ViewTermMarkSheet = new DataSet(); 
       Hashtable htViewTermMarkSheet = new Hashtable(); 

       htViewTermMarkSheet.Add("@Year", txtYear.Text); 
       htViewTermMarkSheet.Add("@Faculty", cboFaculty.Text); 
       htViewTermMarkSheet.Add("@Level", cboClass.Text); 
       htViewTermMarkSheet.Add("@Section", cboSection.Text); 
       htViewTermMarkSheet.Add("@term", cboTerm.Text); 
       htViewTermMarkSheet.Add("@CRN",.ToString()); 

       DbOperations _dbAccess = new DbOperations(); 
       _dbAccess.selectStoredProcedure(ds_ViewTermMarkSheet, "spSelectExamView_Exam_TermWiseMarkSheet", htViewTermMarkSheet, "Marks"); 





      cryRpt.SetDataSource(ds_ViewTermMarkSheet.Tables["Marks"]); 
      } 



       axCrystalActiveXReportViewer1.Refresh(); 


      cryRpt.Close(); 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Mark Sheet generation was not successful.\r" + ex.Message, "Error!"); 
     } 
    } 

이 어떻게 한 번에 여러 marksheet을 추가 할 수 있으며, 한 번에 인쇄 ??

답변

0

당신은 전화를해야 :

cryRpt.SetDataSource(ds_ViewTermMarkSheet.Tables["Marks"]); 

..from을 측면 for 루프에서

루프

당신이 필요한 모든 정보와 데이터 테이블을 채울 수 있습니다. 다음 밖으로 측면에서 루프는 SetDataSource() method.

건배

0

귀하의 코드 것이다 루프를 호출하고 데이터 소스를 여러 번 설정할 수 있지만 단지 마지막에 대한 보고서를 새로 고쳐집니다.

 cryRpt.SetDataSource(ds_ViewTermMarkSheet.Tables["Marks"]); 
     axCrystalActiveXReportViewer1.Refresh(); 
     // print the rpeort 
     } 

이 처리하는 올바른 방법은 모든 학생에 대한 정보를 표시하는 보고서를 만드는 것입니다 : 당신은 루프 indice 새로 고침을 이동 andalso이 보고서를 인쇄해야합니다. 학생 ID 또는 이름으로 그룹화하고 그룹 다음에 새 페이지를 설정할 수 있습니다. 그런 다음이 보고서를 인쇄하십시오 (한 번만).

관련 문제