示例 3.交互式
在本例中,我們將看到如何通過(guò)單擊 "Matrix "對(duì)象的單元格來(lái)創(chuàng)建詳細(xì)報(bào)告。例如,我們將使用一個(gè)矩陣來(lái)顯示按年份分組的員工銷售額。
矩陣的數(shù)據(jù)源是 "MatrixDemo "表。該表顯示了按年和月分組的員工銷售額:
Name | Year | Month | ItemsSold | Revenue |
---|---|---|---|---|
Nancy Davolio | 1999 | 2 | 1 | 1000 |
Nancy Davolio | 1999 | 11 | 1 | 1100 |
Nancy Davolio | 1999 | 12 | 1 | 1200 |
Nancy Davolio | 2000 | 1 | 1 | 1300 |
Nancy Davolio | 2000 | 2 | 2 | 1400 |
Nancy Davolio | 2001 | 2 | 2 | 1500 |
Nancy Davolio | 2001 | 3 | 2 | 1600 |
Nancy Davolio | 2002 | 1 | 2 | 1700 |
Andrew Fuller | 2002 | 1 | 2 | 1800 |
Andrew Fuller | 1999 | 10 | 2 | 1900 |
Andrew Fuller | 1999 | 11 | 2 | 2000 |
Andrew Fuller | 2000 | 2 | 2 | 2100 |
Janet Leverling | 1999 | 10 | 3 | 3000 |
Janet Leverling | 1999 | 11 | 3 | 3100 |
Janet Leverling | 2000 | 3 | 3 | 3200 |
Steven Buchanan | 2001 | 1 | 3 | 4000 |
Steven Buchanan | 2001 | 2 | 4 | 4100 |
Steven Buchanan | 2000 | 1 | 4 | 3999 |
- 將 "MatrixDemo.Year "數(shù)據(jù)列放在列頭;
- 將 "MatrixDemo.Name "數(shù)據(jù)列放在行標(biāo)題中;
- 將 "MatrixDemo.Revenue "數(shù)據(jù)列放在單元格中。
如圖所示,單元格的值是員工全年銷售額的總和。讓我們創(chuàng)建一個(gè)詳細(xì)報(bào)告,點(diǎn)擊單元格后就會(huì)顯示該報(bào)告。在我們的例子中,詳細(xì)報(bào)告可以包含所選員工在所選年度每個(gè)月的銷售額。
如何將單元格與打印數(shù)據(jù)連接起來(lái)?矩陣的每個(gè)單元格都有自己的地址。這是來(lái)自列標(biāo)題和行標(biāo)題的值的組合。在我們的示例中,單元格的地址是雇員年份和姓名的組合。這些數(shù)據(jù)可以準(zhǔn)確地傳遞到詳細(xì)報(bào)告中。如何做到這一點(diǎn)呢?非常簡(jiǎn)單:設(shè)置超鏈接,只顯示報(bào)告名稱和參數(shù)名稱。參數(shù)值無(wú)需標(biāo)明:對(duì)于矩陣單元格,F(xiàn)astReport 本身會(huì)形成值并將其傳遞到參數(shù)中。
假設(shè)我們點(diǎn)擊了左上角包含數(shù)字 3900 的單元格。這是名為 "Andrew Fuller "的員工 1999 年的銷售額總和。使用什么表格將此值傳入?yún)?shù)?FastReport 使用分隔符合并列和行的值:
這是否意味著我們必須從這個(gè)字符串中提取年份值和員工姓名,將年份轉(zhuǎn)換為 int,然后使用這些值進(jìn)行數(shù)據(jù)篩選?不,這要簡(jiǎn)單得多。我們只需創(chuàng)建一個(gè)具有嵌套參數(shù)的參數(shù)。你可以在 "數(shù)據(jù) "一章中了解到這一點(diǎn)。在本例中,父參數(shù)可以是這樣的1999;Andrew Fuller
創(chuàng)建參數(shù)時(shí),請(qǐng)考慮以下時(shí)刻:
- 不需要設(shè)置父參數(shù)。只需給它命名即可;
- 父參數(shù)的嵌套參數(shù)數(shù)量必須與矩陣傳遞的值數(shù)量相同。在本例中,有兩個(gè)值;
- 嵌套參數(shù)的順序必須與矩陣傳遞值的順序一致。在本例中,年份將在第一個(gè)參數(shù)中傳遞,雇員姓名將在第二個(gè)參數(shù)中傳遞;
- 嵌套參數(shù)可以隨意命名,但最好與矩陣元素名稱一致;
- 正確設(shè)置每個(gè)嵌套參數(shù)的數(shù)據(jù)類型非常重要。數(shù)據(jù)類型必須與傳入?yún)?shù)的值一致。在我們的例子中,第一個(gè)參數(shù)(年份)必須是整數(shù)類型,第二個(gè)參數(shù)(員工姓名)必須是字符串類型。
在超鏈接配置中,將父參數(shù)指定為報(bào)告參數(shù)(在我們的示例中為 "SelectedCell"):
FastReport 將這些值傳入 SelectedCell.Year 和 SelectedCell.Name 嵌套參數(shù)。這些值將轉(zhuǎn)換為參數(shù)配置中指定的數(shù)據(jù)類型,因此正確配置參數(shù)數(shù)據(jù)類型非常重要。
詳細(xì)報(bào)告位于主報(bào)告的單獨(dú)頁(yè)面上,使用相同的數(shù)據(jù)源:
為了顯示所選員工在所選年份的銷售額,請(qǐng)?jiān)O(shè)置篩選條件。為此,請(qǐng)打開 "Data"帶編輯器,并輸入以下篩選條件:
報(bào)告已準(zhǔn)備就緒。運(yùn)行報(bào)告并點(diǎn)擊左上角的單元格。將打開一份詳細(xì)報(bào)告,其中包含以下數(shù)據(jù):[MatrixDemo.Year] == [SelectedCell.Year] && [MatrixDemo.Name] == [SelectedCell.Name]
如圖所示,數(shù)值之和(1900+2000)與我們點(diǎn)擊的矩陣單元格相對(duì)應(yīng)。