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

2021-06-02 08:04:09 字數 1658 閱讀 8339

本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

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

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...