翻譯|使用教程|編輯:張瑩心|2021-11-04 13:59:09.280|閱讀 343 次
概述: FastReport多級(jí)報(bào)告的結(jié)構(gòu)可以比作一棵樹——樹干、大樹枝、從它們長(zhǎng)出的細(xì)樹枝,等等直到葉子——或者與公司結(jié)構(gòu)進(jìn)行比較:部門、分部、員工。它們通常被稱為主從或主從,由幾個(gè)表組成。一張表包含主要實(shí)體的列表;與第一個(gè)表綁定的另一個(gè)表包含一個(gè)從屬實(shí)體列表,其中包含對(duì)第一個(gè)表的引用,指定第二個(gè)表中的某個(gè)實(shí)體從屬于第一個(gè)表中的哪個(gè)實(shí)體,依此類推。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
FastReport VCL是用于 Delphi、C++ Builder、RAD Studio 和 Lazarus 的報(bào)告和文檔創(chuàng)建 VCL 庫(kù)。它提供了可視化模板設(shè)計(jì)器,可以訪問(wèn) 30 多種格式,并可以部署到云、網(wǎng)站、電子郵件和打印中。
立即點(diǎn)擊下載FastReport VCL 最新版
在這篇文章中,想告訴你 FastReport 如此強(qiáng)大的多級(jí)報(bào)告。他們的結(jié)構(gòu)可以比作一棵樹——樹干、大樹枝、從它們長(zhǎng)出的細(xì)樹枝,等等直到葉子——或者與公司結(jié)構(gòu)進(jìn)行比較:部門、分部、員工。它們通常被稱為主從或主從,由幾個(gè)表組成。一張表包含主要實(shí)體的列表;與第一個(gè)表綁定的另一個(gè)表包含一個(gè)從屬實(shí)體列表,其中包含對(duì)第一個(gè)表的引用,指定第二個(gè)表中的某個(gè)實(shí)體從屬于第一個(gè)表中的哪個(gè)實(shí)體,依此類推。FastReport 最多支持六層嵌套(通過(guò)使用 Nested 報(bào)表對(duì)象可能會(huì)更多,但這將在后面描述)。在實(shí)際應(yīng)用中,很少需要打印具有大量數(shù)據(jù)嵌套的報(bào)告;通常,1-3 級(jí)就足夠了。
顧客:
CustNo Company
1221 Kauai Dive Shoppe
1231 Unisco
1351 Sight Diver
訂單:
訂單無(wú)客戶無(wú)銷售日期
1003 1351 12.04.1988
1023 1221 01.07.1988
1052 1351 06.01.1989
1055 1351 04.02.1989
1062
1981 2060 139 1989
如您所見,第二個(gè)表包含所有公司發(fā)出的所有訂單的列表。要獲取特定公司的訂單列表,應(yīng)從表中選擇數(shù)據(jù),其中字段 CustNo 等于所選公司的編號(hào)。使用這些數(shù)據(jù)構(gòu)建的報(bào)告將如下所示:
1221 考艾島潛水專柜
1023 1988年7月1日
1123 1993年8月24日
1231 聯(lián)合船代
1060 1989年2月28日
1351 視覺潛水員
1003 1988年4月12日
1052 1989年6月1日
1055 1989年2月4日
現(xiàn)在我們開始做報(bào)告。我們?cè)?Delphi 中創(chuàng)建了一個(gè)新項(xiàng)目,并為表單設(shè)置了兩個(gè) TTable 組件、一個(gè) TDataSource 組件、兩個(gè) TfrxDBDataSet 組件和一個(gè) TfrxReport 組件。
Table1 :
DatabaseName = 'DBDEMOS'
TableName = 'Customer.db'
Table2 :
DatabaseName = 'DBDEMOS'
TableName = 'Orders.db'
DataSource1 : DataSet = Table1 frxDBDataSet1 : DataSet = Table1 UserName = 'Customers' frxDBDataSet2 : DataSet = Table2 UserName = '訂單'
在報(bào)表設(shè)計(jì)器中,我們?cè)?Report|Data... 窗口中連接我們的數(shù)據(jù)源。
將第一級(jí)數(shù)據(jù)(主)和第二級(jí)數(shù)據(jù)(詳細(xì)信息)帶添加到頁(yè)面。從數(shù)據(jù)面板(在右側(cè)),我們將表字段拉到各自的波段(主和細(xì)節(jié))。它看起來(lái)像這樣:
注意 - 第一級(jí)數(shù)據(jù)帶必須位于上方!如果位于2級(jí)數(shù)據(jù)帶以下,F(xiàn)astReport會(huì)在開始上報(bào)時(shí)提示錯(cuò)誤。
啟動(dòng)后,我們將看到每個(gè)客戶的訂單列表都是相同的,并且包含訂單表中的所有記錄。這是因為我們沒有打開 Orders 表中的記錄過(guò)濾。
讓我們回到我們的數(shù)據(jù)源。對(duì)于表 2 組件,我們?cè)O(shè)置 MasterSource = DataSource1 屬性。因此,我們?cè)O(shè)置了主從連接。現(xiàn)在我們必須在下級(jí)源中設(shè)置記錄過(guò)濾條件。為此,請(qǐng)調(diào)用 Table 2 組件中 MasterFields 屬性的編輯器:
我們必須連接兩個(gè)源中的兩個(gè) CustNo 字段。為此,請(qǐng)?jiān)谏厦娴牧斜碇羞x擇 CustNo 索引,選擇字段并單擊添加按鈕。一堆字段將被重新定位到較低的窗口中。之后,使用 ОК 按鈕關(guān)閉編輯器。
當(dāng)報(bào)表啟動(dòng)時(shí),F(xiàn)astReport 將執(zhí)行以下操作。它將從主表 (Customer) 中選擇下一個(gè)記錄并將過(guò)濾器設(shè)置為從屬表 (Orders)。只有滿足條件 Orders.CustNo = Customer.CustNo 的錄音才會(huì)留在表中。也就是說(shuō),對(duì)于每個(gè)客戶,只會(huì)顯示該客戶的訂單:
同樣,您最多可以構(gòu)建具有六個(gè)數(shù)據(jù)級(jí)別的報(bào)告。
如果您對(duì) FastReport 報(bào)表工具感興趣,歡迎加入 FastReport QQ 交流群:599154289
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn