上一次自己做了直接在rpt檔案裡使用oledb串連使用資料庫的方法 但是不是很靈活 這次做了使用sql語句直接產生dataset做為報表的資料來源(即push模式),這樣就可以接受參數了。當然報表有設定參數的功能 這方面我還沒有詳細研究
一.sql語句中沒有使用表的相互關聯(簡單的查詢語句)
設計一個DataSet
1) 右擊“解決方案瀏覽器”,選擇“添加”--“添加新項”-->“資料集”
2) 從“伺服器總管”中的“SQL Server”中拖放“Stores”表(位於PUBS資料庫中)
3) 此時在資料集中就會有一個Stores表的結構圖。xsd檔案中僅僅包含一個結構圖,但是不會有任何資料在裡面
建立一個.rpt檔案crystalreport1.rpt同時將其指定給上一步建立的DataSet。
4) 使用上面的介紹過的方法建立此檔案,唯一的不同就是使用資料集來代替前面的直接連接資料。
5)建立.rpt檔案之後,右擊“詳細資料”-->"添加/刪除資料庫“
6) 在”資料庫專家“視窗中,展開”項目資料“(代替以前的OleDb),展開“ADO.Net資料集”--"DataSet1“,選擇”Stores“表。
7) 將”Stores"表添加到“選定的表”中,點擊“OK”
8) 建立一個WebForm1.aspx 拖入一個Crystal Report Viewer 控制項
9)WebForm1.aspx.cs
ReportDocument oRpt = new ReportDocument();
string RptDir="f:\\bbs\\test\\crystal\\crystalreport1.rpt";
oRpt.Load(RptDir);
...//根據sql語句得到DataSet 這個就不多說了
oRpt.SetDataSource(ds);
CrystalReportViewer1.ReportSource=oRpt;
//注意push模式用不到設定logOnInfo參數
10)運行試試看!應該沒問題哦
另外送上水晶報表10的下載:http://sc.fixdown.com/fixdown/download.asp?id=14867&free=sx-down