在 ActiveReports 中可以通過(guò)矩陣控件非常方便的實(shí)現(xiàn)交叉報(bào)表,同時(shí)還可以設(shè)置數(shù)據(jù)的分組、排序、過(guò)濾、小計(jì)、合計(jì)等操作,可以滿(mǎn)足您報(bào)表的智能數(shù)據(jù)分析等需求。在矩陣控件中組的行數(shù)和列數(shù)由每個(gè)行分組和列分組中的唯一值的個(gè)數(shù)確定。同時(shí),您可以按行組和列組中的多個(gè)字段或表達(dá)式對(duì)數(shù)據(jù)進(jìn)行分組。在運(yùn)行時(shí),當(dāng)組合報(bào)表數(shù)據(jù)和數(shù)據(jù)區(qū)域時(shí),隨著為列組添加列和為行組添加行,矩陣將在頁(yè)面上水平和垂直增長(zhǎng)。
在矩陣控件中,也可以包括最初隱藏詳細(xì)信息數(shù)據(jù)的明細(xì)切換,然后用戶(hù)便可單擊該切換以根據(jù)需要顯示更多或更少的詳細(xì)信息,以此實(shí)現(xiàn)數(shù)據(jù)向下鉆取功能。
我們這里將要演示的是產(chǎn)品銷(xiāo)售數(shù)據(jù)分析表,列分組按照產(chǎn)品類(lèi)別和產(chǎn)品名稱(chēng)進(jìn)行分組;行分組按照年和月進(jìn)行分組,并對(duì)銷(xiāo)量大于2000的數(shù)據(jù)進(jìn)行高亮顯示,以下是詳細(xì)實(shí)現(xiàn)步驟:
1、創(chuàng)建報(bào)表文件
在應(yīng)用程序中創(chuàng)建一個(gè)名為 rptCrossTable1.rdlx 的 ActiveReports 報(bào)表文件,使用的項(xiàng)目模板為 ActiveReports 頁(yè)面報(bào)表,創(chuàng)建完成之后從 VS 的報(bào)表菜單項(xiàng)中選擇轉(zhuǎn)換為連續(xù)頁(yè)面布局(CPL)報(bào)表,將固定頁(yè)面報(bào)表轉(zhuǎn)換為連續(xù)頁(yè)面報(bào)表。
2、打開(kāi)報(bào)表資源管理器,并按照以下信息創(chuàng)建報(bào)表數(shù)據(jù)源
名稱(chēng):
NWind_CHS
類(lèi)型:
Micorsoft OleDb Provider
OLE DB 提供程序:
Microsoft.Jet.OLEDB.4.0
服務(wù)器或文件名稱(chēng):
Data\NWind_CHS.mdb
3、 添加數(shù)據(jù)集
在新建的 NWind_CHS 數(shù)據(jù)源上鼠標(biāo)右鍵并選擇添加數(shù)據(jù)集菜單項(xiàng),數(shù)據(jù)集信息如下:
常規(guī)-名稱(chēng):SaleDetails
查詢(xún)-查詢(xún):
SELECT t.*, 類(lèi)別.類(lèi)別名稱(chēng) FROM (
SELECT DATEPART("yyyy",訂單.訂購(gòu)日期) AS 訂購(gòu)年, DATEPART("m",訂單.訂購(gòu)日期) AS 訂購(gòu)月,類(lèi)別.類(lèi)別ID,產(chǎn)品.產(chǎn)品名稱(chēng),訂單明細(xì).數(shù)量, 訂單明細(xì).單價(jià), 訂單明細(xì).折扣 FROM (( 訂單
INNER JOIN 訂單明細(xì) ON 訂單.訂單ID = 訂單明細(xì).訂單ID)
INNER JOIN 產(chǎn)品 ON 訂單明細(xì).產(chǎn)品ID = 產(chǎn)品.產(chǎn)品ID)
INNER JOIN 類(lèi)別 ON 產(chǎn)品.類(lèi)別ID = 類(lèi)別.類(lèi)別ID ) as t
INNER JOIN 類(lèi)別 ON t.類(lèi)別ID = 類(lèi)別.類(lèi)別ID
ORDER BY 訂購(gòu)年,訂購(gòu)月
?
4、設(shè)計(jì)報(bào)表界面
從 Visual Studio 工具箱中將 ActiveReports 7 頁(yè)面布局報(bào)表分類(lèi)下的 Matrix 控件添加到報(bào)表設(shè)計(jì)界面,然后從屬性窗口的命令區(qū)域選擇屬性對(duì)話(huà)框命令,以打開(kāi)矩陣控件 Matrix 的屬性設(shè)置對(duì)話(huà)框,然后按照以下表格設(shè)置矩陣控件 Matrix 的屬性:
矩陣-常規(guī)-數(shù)據(jù)集名稱(chēng):
SaleDetails
行分組-常規(guī)-添加分組:
名稱(chēng):Matrix1_訂購(gòu)年
分組:=[訂購(gòu)年]
表達(dá)式:=[訂購(gòu)年]
行分組-常規(guī)-添加分組:
名稱(chēng):Matrix1_訂購(gòu)月
分組:=[訂購(gòu)月]
表達(dá)式:=[訂購(gòu)月]
列分組-常規(guī)-添加分組:
名稱(chēng):Matrix1_類(lèi)別名稱(chēng)
分組:=[類(lèi)別名稱(chēng)]
表達(dá)式:=[類(lèi)別名稱(chēng)]
列分組-常規(guī)-添加分組:
名稱(chēng):Matrix1_產(chǎn)品名稱(chēng)
分組:=[產(chǎn)品名稱(chēng)]
表達(dá)式:=[產(chǎn)品名稱(chēng)]
完成以上設(shè)置之后回到報(bào)表設(shè)計(jì)界面,選中數(shù)據(jù)單元格 TextBox4 ,在屬性窗口的命令區(qū)域中點(diǎn)擊屬性對(duì)話(huà)框命令,并按照以下表格設(shè)置數(shù)據(jù)單元格的屬性:
常規(guī)-值:
=Sum([數(shù)量] *[單價(jià)] * (1-[折扣]))
外觀-背景色-顏色:
=IIf( (Sum( [數(shù)量] *? [單價(jià)]? * (1-? [折扣]? )) > 2000) And ( Sum( [數(shù)量] *? [單價(jià)]? * (1-? [折扣]? )) <> ""? , "#c21952", "White" )
需要注意的是,我們將外觀-背景色-顏色屬性通過(guò)表達(dá)式的方式來(lái)完成對(duì)數(shù)據(jù)的高亮顯示,如果銷(xiāo)售量大于2000單元格背景色設(shè)置為高亮,小于等于2000設(shè)置為白色。
最終完成的設(shè)計(jì)界面如下:
5、運(yùn)行程序
通過(guò) F5 鍵運(yùn)行程序,得到以下效果:
在線(xiàn)演示及源碼下載地址:
http://www.gcpowertools.com.cn/products/activereports_demo.htm
ActiveReports 報(bào)表應(yīng)用教程 (7)---交叉報(bào)表及數(shù)據(jù)透視圖實(shí)現(xiàn)方案
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
