ASP.NET水晶報表Push模式顯示多個表的數(shù)據(jù)
很多ASP.NET水晶報表示例教程只能顯示出一個表的數(shù)據(jù)。一個很常見的描述是,如果想使用PUSH模式在報表中顯示多個表的數(shù)據(jù),就會有“登錄失敗”的問題。其實就在于,這些示例將DataSet與數(shù)據(jù)庫的關(guān)系描述的很緊密,給人一種錯覺,DataSet就要安排的和數(shù)據(jù)庫的結(jié)構(gòu)相同,其實呢,PUSH模式中的DataSet和數(shù)據(jù)庫是一點關(guān)系都沒有的,之所以要創(chuàng)建這個DataSet的原因,就是為了讓你能夠編輯RPT模版。***顯示出來的數(shù)據(jù),全都是你在后臺代碼中調(diào)用SetDataSource給它的。與設(shè)計時的數(shù)據(jù)庫沒有任何關(guān)系的。因此原示例中創(chuàng)建DataSet部分應(yīng)該修改為以下步驟:
如何實現(xiàn)ASP.NET水晶報表Push模式顯示多個表的數(shù)據(jù)
1、 在解決方案資源管理器中添加新項,選擇數(shù)據(jù)集,設(shè)置文件名,確定。
2、 在數(shù)據(jù)集設(shè)計器中單擊右鍵,選擇“新建element”,這個步驟,實際上就是添加了一個表。如圖,設(shè)置表名。
3、 如圖所示,在新建出的表中添加相應(yīng)的字段,這里的字段名和字段類型,一定要和你想要顯示的那個字段相符。否則可能會出問題。
4、 剩下的步驟和原教程中相同,在數(shù)據(jù)庫專家中選擇“項目數(shù)據(jù)-ADO.NET數(shù)據(jù)集”,下面就可以看到你剛才新建的數(shù)據(jù)庫及表。將該表選擇到“選定表”中。并按照你的意愿創(chuàng)建報表模版。在后臺代碼中用你從數(shù)據(jù)庫中取出的DataSet填充到報表中。OK!
附網(wǎng)上原示例內(nèi)容:
ASP.NET水晶報表:從數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)集對象
1.在項目中新建一個架構(gòu)文件:
a.在解決方案資源管理器中,右擊項目名,指向“添加”,然后單擊“添加新項”。
b.在“添加新項”對話框的“類別”區(qū)域,展開文件夾,然后選擇“數(shù)據(jù)”。
c.在“模板”區(qū)域選擇“數(shù)據(jù)集”。
d.接受默認(rèn)名稱 Dataset1.xsd。
這就創(chuàng)建了一個新的架構(gòu)文件 (Dataset1.xsd),以后將用它來生成強類型數(shù)據(jù)集。該架構(gòu)文件將顯示在 ADO.NET 數(shù)據(jù)集設(shè)計器中。
2.指定數(shù)據(jù)庫位置:
a.在服務(wù)器資源管理器中,右擊“數(shù)據(jù)連接”并選擇“添加連接”。
b.在“數(shù)據(jù)鏈接屬性”對話框中,單擊“提供程序”選項卡,然后選擇一個提供程序(例如 Microsoft OLE DB Provider for SQL Server)。
c.單擊“連接”選項卡,然后指定您的數(shù)據(jù)庫所在位置。在所需位置輸入服務(wù)器和登錄信息。
d.單擊“確定”按鈕。
此時,您的數(shù)據(jù)庫及其表和字段就出現(xiàn)在服務(wù)器資源管理器的“數(shù)據(jù)連接”節(jié)點下面。
3.在解決方案資源管理器中,雙擊 Dataset1.xsd (如果它尚不是活動視圖)。
Dataset1.xsd 現(xiàn)在應(yīng)顯示在“數(shù)據(jù)集”選項卡中。
4.若要為數(shù)據(jù)集建立架構(gòu),請將需要的表從服務(wù)器資源管理器中拖動到 Dataset1.xsd 的“數(shù)據(jù)集”選項卡上。
5.單擊“保存 Dataset1.xsd”來保存“Dataset1.xsd”文件。
6.在“生成”菜單上,單擊“生成”為項目生成數(shù)據(jù)集對象。
ADO.NET 數(shù)據(jù)集對象提供數(shù)據(jù)的描述,從它可以向 Crystal report 添加表。使用 Crystal Report Designer 中的“數(shù)據(jù)庫專家”從 ADO.NET 數(shù)據(jù)集對象添加表。
請在使用“報表專家”創(chuàng)建新報表時調(diào)用“數(shù)據(jù)庫專家”?;蛘?,要從一個已經(jīng)使用 ADO.NET 建立好的報表中訪問“數(shù)據(jù)庫專家”,請在 Report Designer 中右擊,指向“數(shù)據(jù)庫”,然后單擊“添加/刪除數(shù)據(jù)庫”。
ASP.NET水晶報表:將報表連接到 ADO.NET 數(shù)據(jù)集對象
1.在“數(shù)據(jù)庫專家”中,展開“項目數(shù)據(jù)”文件夾。
2.展開“ADO.NET 數(shù)據(jù)集”文件夾。
3.選擇所需數(shù)據(jù)集對象。
例如,如果當(dāng)時使用的是從項目“WindowsApplication1”的架構(gòu)文件“Dataset1.xsd”中生成的數(shù)據(jù)集對象,則應(yīng)該選擇“WindowsApplication1.Dataset1”。
4.選擇要向報表中添加的表,和使用其他數(shù)據(jù)源一樣。
動態(tài)改變數(shù)據(jù)源的代碼
Dim dsdataSet As New DataSet()
Dim oRpt As New rptClient() '已建立的報表rptClient
請讀者自行填充數(shù)據(jù)集dsdataSet
'使用“報表引擎”對象模型將填充的數(shù)據(jù)集,傳遞給報表
oRpt.SetDataSource(dsdataSet.Tables(0))
' 將帶有數(shù)據(jù)的報表對象綁定到 Windows 窗體查看器,rptVew(CrystalReportViewer控件)
rptVew.ReportSource = oRpt
【編輯推薦】