.rpt 檔案僅負責報表版面設計(拉模式),實際資料在網頁程式中以 ADO.NET 取得後指派。
放置 CrystalReportViewer 控制項 (命名為 CRV1),於 Page_Load 撰寫:
string connStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\xtreme.mdb;Persist Security Info=True";
string sql = "select * from 訂單";
OleDbDataAdapter da = new OleDbDataAdapter(sql, connStr);
DataTable dt = new DataTable();
da.Fill(dt);
Session["dt"] = dt;
ViewState["d"] = 0;
ReportDocument doc = new ReportDocument();
doc.Load(Server.MapPath(@"CR1.rpt"));
doc.SetDataSource((DataTable)Session["dt"]);
CrystalReportViewer1.ReportSource = doc;
即可預覽報表樣式。報表設計與資料取得分離,符合關注點分離原則。