說明:使用Crystal Reports實做一報表,繫結DB table為2個以上,且table之間無關聯,
作法:
1. 使用DataSet建立報表資料結構,新增DataTable以對應不同DB table,可不需建立DataTableAdapter方法
2. 新增Crystal Report檔,使用資料庫專家->ADO.NET資料集,選取建立的table結構
3. 將資料庫欄位拉至報表上
4. 新增一web page以呈現報表,拉一CrystalReportViewer控制項,依需求調整控制項面板
5. 在code behind繫結資料來源:
例:
//需import該dll
using CrystalDecisions.CrystalReports.Engine;
private ReportDocument rdReport;
protected void Page_Load(object sender, EventArgs e)
{
rdReport = new ReportDocument();
if (!IsPostBack)
{
BindReport();
}
}
private void BindReport()
{
DataSet dsReport = GetReportData();
string strRptName = Page.MapPath("ReportView.rpt");
rdReport.Load(strRptName);
rdReport.SetDataSource(dsReport);
CrystalReportViewer1.ReportSource = rdReport;
CrystalReportViewer1.DataBind();
}
private DataSet GetReportData()
{
DataSet dsReturn = new DataSet();
DataTable dtTemp = null;
//此處以DataTable回傳各DB table資料,若table之間有關聯,可以join方式回傳即可,無關聯則取得各table資料,再依Step1建立之table name加進DataSet中即可
dtTemp = 各sql回傳資料;
dtTemp.TableName = "Step1中建立的table name";
dsReturn.Tables.Add(dtTemp);
return dsReturn;
}
參考資料:
http://csharp.net-informations.com/dataset/dataset-multiple-tables-sqlserver.htm
http://www.blueshop.com.tw/board/show.asp?subcde=BRD20110419171449396
http://www.functionx.com/csharp2/dataset/Lesson02b.htm
沒有留言:
張貼留言