如何在FastReport VCL 6中的數(shù)據(jù)組標(biāo)題中顯示總計(jì)
FastReport VCL 6中出現(xiàn)的新功能之一是能夠在標(biāo)題欄中顯示分組結(jié)果。以前,您只能在分組后顯示結(jié)果。如果數(shù)據(jù)組足夠大,則必須將其向下滾動(dòng)以查找結(jié)果。在數(shù)據(jù)組標(biāo)題中打印結(jié)果要方便得多。
我們來看看在標(biāo)題欄中使用總數(shù)的特性。最初有關(guān)它如何工作的一點(diǎn)理論。
標(biāo)題中的總數(shù)使用延遲處理來實(shí)現(xiàn)。在報(bào)告輸出期間,所有具有非標(biāo)準(zhǔn)處理?xiàng)l件的對象都被放置在特殊列表中。然后,在達(dá)到一定條件時(shí),觸發(fā)對象的處理。
在標(biāo)題區(qū)中成功顯示總數(shù)必須遵守許多條件:
- 標(biāo)題欄必須有成對的頁腳band。這對確定報(bào)告的結(jié)構(gòu)很有必要?;蛘吒玫卣f,以確定我們將在下面考慮的事件;
- 成對的頁腳band必須有一個(gè)可以計(jì)算總數(shù)的字段。相同的字段將被添加到標(biāo)題band。如果你不需要這個(gè)數(shù)據(jù)組的頁腳的結(jié)果,那就只是讓它看不見。
現(xiàn)在考慮“Text”對象的新屬性。Processing屬性允許您定義一個(gè)事件,通過這個(gè)事件將在這個(gè)對象中顯示一個(gè)值。事實(shí)上,Processing包含兩個(gè)屬性——GroupLevel和ProcessAt。 GroupLevel允許您設(shè)置數(shù)據(jù)組的嵌套級別。這是在您使用幾個(gè)嵌套分組的情況下完成的。因此,您可以在每個(gè)組的每個(gè)標(biāo)題中顯示總計(jì)。
ProcessAt包含您可以開始處理該字段的事件列表。以下是可能的值:
- paColumnFinished——列顯示結(jié)束時(shí);
- paCustom——用戶在報(bào)告腳本中創(chuàng)建的任意事件;
- paDataFinished——顯示所有數(shù)據(jù)后;
- paDefault——默認(rèn)值;
- paGroupFinished——在數(shù)據(jù)組顯示結(jié)束時(shí);
- paPageFinished——顯示頁面時(shí);
- paReportFinished——顯示報(bào)告時(shí);
- paReportPageFinished——顯示報(bào)告模板頁面時(shí)。
例如,您選擇在數(shù)據(jù)組結(jié)束時(shí)生成總數(shù)。為了發(fā)現(xiàn)這個(gè)數(shù)據(jù)組已經(jīng)結(jié)束,F(xiàn)R要求一個(gè)小的數(shù)據(jù)組隱藏單元格。如果所選事件是paReportFinished,則頁面頁腳是必需的。
現(xiàn)在讓我們在實(shí)踐中考慮以上所有內(nèi)容。我們需要?jiǎng)?chuàng)建一個(gè)包含兩個(gè)會話的報(bào)告。一個(gè)嵌入另一個(gè)。從演示數(shù)據(jù)庫中獲取銷售表。
您可以從模板中看到,我們創(chuàng)建了一個(gè)公司名稱的數(shù)據(jù)組。然后我們添加了訂單號的組。最后,在“Data” band中,顯示了訂單中的信息。每組的頁腳總數(shù)為:
[SUM (< Sales. "Qty"> * < Sales. "List Price">, MasterData1)]
摘要顯示在報(bào)告匯總區(qū)中。
我們的目標(biāo)是將結(jié)果帶入標(biāo)題欄。我們從第一組開始。在右側(cè)添加文本字段:“Total group sum: [SUM (< Sales." Qty "> * < Sales." List Price ">, MasterData1)] $”。在這個(gè)文本框的屬性中,我們找到Processing并設(shè)置paGroupFinished的值:
運(yùn)行報(bào)告:
現(xiàn)在讓我們將兩個(gè)文本字段添加到第二組。我們會把它們一個(gè)接一個(gè)放在右邊。對于第一組,該值為“[SUM (< Sales." Qty "> * < Sales." List Price ">, MasterData1)] $”。對于第二組,是“from [SUM (< Sales." Qty "> * < Sales." List Price ">, MasterData1)] $”。
現(xiàn)在為第一組設(shè)置屬性:GroupLevel - 0,ProcessAt - paGroupFinished。
對于第二組我們設(shè)置相同的屬性:GroupLevel - 1,ProcessAt - paGroupFinished。
因此,您將首先推導(dǎo)出當(dāng)前數(shù)據(jù)組的結(jié)果,然后推導(dǎo)出該級別以上的數(shù)據(jù)組。我們來看看它的樣子:
它仍然顯示整個(gè)報(bào)告的總計(jì)。添加一個(gè)文本字段到報(bào)表頭:Total sum: [SUM (< Sales. "Qty"> * < Sales. "List Price">, MasterData1)] $。我們?yōu)樗O(shè)置屬性:GroupLevel - 0,ProcessAt - paReportPageFinished。運(yùn)行報(bào)告:
在每種情況下,我們都顯示一個(gè)具有相同聚合表達(dá)式的字段,但我們?yōu)閿?shù)據(jù)組和報(bào)告標(biāo)題獲得了不同的值。這是關(guān)于組建總時(shí)間的一切。在某個(gè)時(shí)間點(diǎn),聚合函數(shù)具有不同的值。這就是為什么正確設(shè)置ProcessAt參數(shù)很重要。
產(chǎn)品介紹 | 下載試用 | 優(yōu)惠活動(dòng) | 在線客服 | 聯(lián)系Elyn