2008年5月20日 星期二

ASP.NET配合Crystal

Dim dt As DataTable
'取出報表欲顯示之資料集
dt = db.GetData("select * from BarcodeRec")
'使用ReportDocument載入實體報表檔
rptDoc.Load(My.Computer.FileSystem.CurrentDirectory + "\frmBarCodeP.rpt")
'將報表物體的資料來源設定為DataTable
rptDoc.SetDataSource(dt)
'以報表檢視器顯示報表
CrystalReportViewer1.ReportSource = rptDoc

以下為之前在網站上找到的資料:

大致操作:
a 建立ADO.NET資料集---DataSet1.xsd
b 建立CrystalReports--CrystalReport.rpt
c 設計WEB頁面 拉入報表顯示控件---CrystalReportViewer
d 相關後台編碼
添加相關引用
連接數據庫
用相關查詢的結果填充DataSet1的實例對象
建立ReportDocument--rptDoc
rptDoc載入報表 rptDoc.Load("...")
設定rptDoc的資料來源 rptDoc.SetDataSource(ds)
通過頁面的報表檢視器顯示報表 crViewer.ReportSource = rptDoc

實例步驟:
1 新建web專案

2 在專案中新增ADO.NET資料集-DataSet1.xsd

專案右鍵-加入新項目-資料集

3 建立資料連接
伺服器總管-資料連接-右鍵-加入資料連接

4 將資料表(如tablename)放入剛才所建的資料集

具體就是從資料庫中將該表拉入資料集設計界面即可

5 儲存並建置專案

-----------

6 新增Crystal Reports報表-CrystalReport.rpt

專案-右鍵-加入新項目-Crystal Reports

7 使用標准報表專家 建立報表

8 使用ADO.NET資料集 做為資料來源

9 選擇加入相關表的相關樣位到報表中顯示

10 使用標准樣式

11 儲存並建置專案

----------

12 設計表單 拉入工具樣中的 CrystalReportViewer

13 編寫該WEB頁面的後台代碼

14 加入如下參考:
using System.Data.SqlClient
usint CrystalDecisions.CrystalReports.Engine

15 在適當位置編寫如下相關代碼
建立資料庫連線
SqlConnection sqlconn = new SqlConnection("server=localhost;database=db;uid=uid;pwd=pwd;");
sqlconn.Open();
建立SQL指令
SqlDataAdapter sda = new SqlDataAdapter("select * from table", sqlconn);

取回資料放入資料集
DataSet1 ds = new DataSet1();//注意 此處用的是 剛才所建立的資料集 而不是慣用的DataSet
sda.Fill(ds, "tablename");//注意 此處的tablename 要與剛才在建立資料集時 用到的tablename相同

建立報表物體-rptDoc
ReportDocument rptDoc = new ReportDocument();

載入報表-CrystalReport.rpt
rptDoc.Load(this.Server.MapPath("./").ToString() + "/CrystalReport.rpt");

將報表物體的資料來源設定為ds
rptDoc.SetDataSource(ds);

以報表檢視器顯示報表
this.CrystalReportViewer1.ReportSource = rptdoc;
this.CrystalReportViewer1.DataBind();

------------
編譯運行 查看效果

參考資料:

如何在ASP.Net中使用CrystalReport

如何部署 ASP.NET CRYSTAL REPORT

部署Crystal Report for ASP.NET 2.0

沒有留言: