2011年2月17日 星期四

[.NET]如何實做CrystalReport於Web網頁

方便給第一次設計CR於網頁中的人參考使用。

CR版本:CR XI

1. 開啟.Net 2003 建立XST (DATASET)
提供給CR 作為資料來源使用。裡面元素就是到時候要放到報表中的參數。










2. 開啟.Net 2003  建立 RPT
點選專案右鍵,加入新項目,選擇CrystalReport。
(建立完成後,可使用CR XI軟體來編輯會比較輕鬆)
建立新報表時可透過精靈協助建立,Step By Step 依序往下建立,
如果需要群組的需求時,記得選擇群組加入。
[標準報表精靈]-->[目前的連結]-->[選擇1.新建立的DataSet]-->[選擇要加入的欄位資料]-->
[選擇群組欄位]-->[完成]


*加入Crystal Report rpt










*資料來源設定


















3. 撰寫顯示報表程式碼

 先在aspx中拉一個CrystalReportViewer1元件,作為報表顯示的元件。接下來程式碼範例如下:

   //組成要傳給CR的DataSet
   DataSet objDs = new DataSet();
   DataTable objDTbe=new DataTable("ENTprintTable");
   string[] strColumnName={"BILL_ID","SEND_DEP","SEND_EMPID","SEND_EMPNAME","REC_DEP","REC_EMPID","REC_EMPNAME","REC_ZIP","REC_BASE","GOOD_MEMO","MEMO","CREATE_DATE"};
   for(int i=0;i<strColumnName.Length;i++)
    objDTbe.Columns.Add(strColumnName[i]);


   //新增資料
   DataRow objDRow=objDTbe.NewRow();
   objDRow[0] = "A1000000001";
   objDRow[1] = "總部-人力資源TEAM";
   objDRow[2] = "1011-吳小劫";
   objDRow[3] = "";
   objDRow[4] = "營業所";
   objDRow[5] = "3712-怡靜";
   objDRow[6] = "";
   objDRow[7] = "11011";
   objDRow[8] = "彰化BASE";
   objDRow[9] = "營業所薪資條";
   objDRow[10] = "收到後請回饋SD";
   objDRow[11] = DateTime.Now.ToString("yyyy/MM/dd");

   //新資料加入DataTable
   objDTbe.Rows.Add(objDRow);
   objDs.Tables.Clear();
   objDs.Tables.Add(objDTbe);
 
   try
   {
    objRpt1.SetDataSource(objDs);   //將DataSet 指定給CR來源端
    //Session["reportDocument"] = objRpt1;
    objRpt1.Refresh();
    CrystalReportViewer1.ReportSource = objRpt1;  //CR報表顯示元件
   }
   catch(Exception ex)
   {
    objDs.Dispose();
    throw ex;
   }
   objDs.Dispose();


4. 記得DataTable名稱要與1.所設計的DataSet要一樣。
5. DataTable欄位名稱也要一樣。
6. 有設計群組的話,Sample畫面如下:

沒有留言: