在葡萄城ActiveReports報表中可以通過矩陣控制元件非常方便的實現交叉報表,同時還可以設定資料的分組、排序、過濾、小計、合計等操作,可以滿足您報表的智慧資料分析等需求。在矩陣控制元件中組的行數和列數由每個行分組和列分組中的唯一值的個數確定。同時,您可以按行組和列組中的多個欄位或表示式對資料進行分組。在執行時,當組合報表資料和資料區域時,隨著為列組新增列和為行組新增行,矩陣將在頁面上水平和垂直增長。
在矩陣控制元件中,也可以包括最初隱藏詳細資訊資料的明細切換,然後使用者便可單擊該切換以根據需要顯示更多或更少的詳細資訊,以此實現資料向下鑽取功能。
我們這裡將要演示的是產品銷售資料分析表,列分組按照產品類別和產品名稱進行分組;行分組按照年和月進行分組,並對銷量大於2000的資料進行高亮顯示,以下是詳細實現步驟:
1、建立報表檔案
在應用程式中建立一個名為 rptCrossTable1.rdlx 的 ActiveReports 報表檔案,使用的專案模板為葡萄城ActiveReports報表頁面報表,建立完成之後從 VS 的報表選單項中選擇轉換為連續頁面佈局(CPL)報表,將固定頁面報表轉換為連續頁面報表。
2、開啟報表資源管理器,並按照以下資訊建立報表資料來源
名稱: | NWind_CHS |
型別: | Micorsoft OleDb Provider |
OLE DB 提供程式: | Microsoft.Jet.OLEDB.4.0 |
伺服器或檔名稱: | Data\NWind_CHS.mdb |
3、 新增資料集
在新建的 NWind_CHS 資料來源上滑鼠右鍵並選擇新增資料集選單項,資料集資訊如下:
常規-名稱:SaleDetails
查詢-查詢:
SELECT
t.*, 類別.類別名稱
FROM
(
SELECT
DATEPART("yyyy",訂單.訂購日期)
AS
訂購年, DATEPART("m",訂單.訂購日期)
AS
訂購月,類別.類別ID,產品.產品名稱,訂單明細.數量, 訂單明細.單價, 訂單明細.折扣
FROM
(( 訂單
INNERJOIN
訂單明細
ON
訂單.訂單ID = 訂單明細.訂單ID)
INNERJOIN
產品
ON
訂單明細.產品ID = 產品.產品ID)
INNERJOIN
類別
ON
產品.類別ID = 類別.類別ID )
as
t
INNERJOIN
類別
ON
t.類別ID = 類別.類別ID
ORDERBY
訂購年,訂購月
4、設計報表介面
從 Visual Studio 工具箱中將 ActiveReports 7 頁面佈局報表分類下的 Matrix 控制元件新增到報表設計介面,然後從屬性視窗的命令區域選擇屬性對話方塊命令,以開啟矩陣控制元件 Matrix 的屬性設定對話方塊,然後按照以下表格設定矩陣控制元件 Matrix 的屬性:
矩陣-常規-資料集名稱: | SaleDetails |
行分組-常規-新增分組: | 名稱:Matrix1_訂購年 分組:=[訂購年] 表示式:=[訂購年] |
行分組-常規-新增分組: | 名稱:Matrix1_訂購月
分組:=[訂購月] 表示式:=[訂購月] |
列分組-常規-新增分組: | 名稱:Matrix1_類別名稱
分組:=[類別名稱] 表示式:=[類別名稱] |
列分組-常規-新增分組: | 名稱:Matrix1_產品名稱
分組:=[產品名稱] 表示式:=[產品名稱] |
完成以上設定之後回到報表設計介面,選中資料單元格 TextBox4 ,在屬性視窗的命令區域中點選屬性對話方塊命令,並按照以下表格設定資料單元格的屬性:
常規-值: | =Sum([數量] *[單價] * (1-[折扣])) |
外觀-背景色-顏色: | =IIf( (Sum( [數量] * [單價] * (1- [折扣] )) > 2000) And ( Sum( [數量] * [單價] * (1- [折扣] )) <> "" , "#c21952", "White" ) |
需要注意的是,我們將外觀-背景色-顏色屬性通過表示式的方式來完成對資料的高亮顯示,如果銷售量大於2000單元格背景色設定為高亮,小於等於2000設定為白色。
最終完成的設計介面如下:
5、執行程式
通過 F5 鍵執行程式,得到以下效果:
線上演示及原始碼下載地址:
http://www.gcpowertools.com.cn/products/activereports_demo.htm
相關閱讀: