為水晶報表(含子報表)繫結資料

2021-07-02 06:02:36 字數 1916 閱讀 8329

本demo為 提供。

我們以push模式為例,既是push,就必須先構造出水晶報表「骨架」---資料集,在專案新增一資料集,我這裡在資料集裡面新增兩個datatable,乙個maintable(主報表用),乙個subtable(子報表用),在maintable新增兩列:id和desc,其中id設為自增列,如圖示

在subtable新增三列:id、mainid和desc,其中id也設為自增列,mainid用來與maintable的id關聯

資料骨架構造完畢,我們再為專案新增倆rpt檔案,顯然是乙個主表,乙個子表,接著我們為報表設定資料來源,開啟主表rpt模板,在字段資源管理器右擊資料庫字段,開啟資料庫專家,為主報表設定資料表,這裡僅將maintable設定為主表資料來源,如圖示

子表類似,將subtable設為子表資料來源即可。

好,報表骨架已經有了,再來設計模板,我們先設計子報表模板,將subtable中的mainid/id/desc三字段拖放到子表詳細資料節,一般情況下,子報表的頁尾節用處不大,顯示出來反而佔空間,所以我們將其抑制顯示,子報表最終設計模板如下圖所示,很簡單吧:)

子報表設計完後,再來設計主報表,也很簡單

首先我們將maintable中的id/desc拖放到詳細資料節,然後在模板新增乙個詳細資料節(右擊詳細資料節選擇在下方插入節即可)用來放置子報表物件,在報表空白處點右鍵->插入->子報表,位置就放在我們剛剛新新增的詳細資料b節,此時彈出的插入子報表窗體會自動在專案中選擇rpt物件,而且目前我們專案只有主/子報表兩個rpt,所以會預設將子報表rpt設為其子報表。回到主報表模板,右擊子報表物件->更改子報表鏈結,將主表id與子表mainid進行關聯,如圖示

至此主報表設計完畢,最終設計模板如下圖所示

我順帶修改了下id與desc欄位物件的字型樣式,當然設計模板可根據你的實際需要設計,我這邊僅僅只是乙個demo

好了,模板設計完畢,進入**

[csharp]view plain

copy

print?

using

system;  

using

system.collections.generic;  

using

system.componentmodel;  

using

system.data;  

using

system.drawing;  

using

system.linq;  

using

system.text;  

using

system.windows.forms;  

using

crystaldecisions.crystalreports.engine;  

namespace

reportdemo  

/// 

/// 往「骨架」塞資料

/// 

/// 

/// 

private

void

frmmain_load(

object

sender, eventargs e)  

/// 

/// 「report」按鈕事件

/// 

/// 

/// 

private

void

btnreport_click(

object

sender, eventargs e)  

/// 

/// 窗體關閉前刪除水晶報表產生的臨時檔案,避免過多臨時檔案導致「報表載入失敗」

/// 

protected

override

void

onformclosing(formclosingeventargs e)  

}  }  

最終執行效果

為水晶報表(含子報表)繫結資料

本demo為 提供。我們以push模式為例,既是push,就必須先構造出水晶報表 骨架 資料集,在專案新增一資料集,我這裡在資料集裡面新增兩個datatable,乙個maintable 主報表用 乙個subtable 子報表用 在maintable新增兩列 id和desc,其中id設為自增列,如圖示...

2019 1 17為水晶報表(含子報表)繫結資料

我們以push模式為例,既是push,就必須先構造出水晶報表 骨架 資料集,在專案新增一資料集,我這裡在資料集裡面新增兩個datatable,乙個maintable 主報表用 乙個subtable 子報表用 在maintable新增兩列 id和desc,其中id設為自增列,如圖示 在subtable...

水晶報表 子報表

經過了一段時間對水晶報表的操作,我對其稍稍了解了一點點。這兩天,一直在為資料量太大而煩惱,我有六張表,其中一張關聯剩餘的五張表。想要顯示資料,結果,顯示不出來,即使我已經在鏈結裡面設定了左外連線。我知道這個是按照笛卡爾積相乘,所以資料會成倍的增加。所以,即使我改用直接連線資料庫的方式也行不通。就是p...