原創|其它|編輯:郝浩|2012-08-23 01:40:32.000|閱讀 500 次
概述:"flat"數據庫表的動態數據聚合是信息系統開發人員和他們的用戶所面臨的首要任務之一,在同一時間通常很難預見用戶方面所需要的數據選擇標準(過濾器),而在維度上,需要對數和以系列字段據進行聚合。需要為每個用戶請求開發新的sql查詢和報表有時耗費時間,這些時間其實是可以很好的用在信息系統的開發上邊的。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
"flat"數據庫表的動態數據聚合是信息系統開發人員和他們的用戶所面臨的首要任務之一,在同一時間通常很難預見用戶方面所需要的數據選擇標準(過濾器),而在維度上,需要對數和以系列字段據進行聚合。需要為每個用戶請求開發新的sql查詢和報表有時耗費時間,這些時間其實是可以很好的用在信息系統的開發上邊的。
因此,問題在于如何給用戶一個創建pivot報表的能力,而不需要借助程序員的幫助。FastReports產品線上,這個這個任務是由FastCube組件集控制的,通過連接數據源到pivot表上我們可以得到一種允許尺寸、過濾器和管理措施的工具。
接下來的小例子演示了它是如何簡單和快速創建應用程序,允許用戶構建pivot表。將 “salesdb. mdb”數據庫與一個批發公司產品銷售數據“銷售”表進行關聯。
這個表包含以下領域:
顧客:客戶
日期---銷售日期
經理---責任經理
產品---產品類型
金額---總共數字
平衡---客戶的資產
成本---銷售成本
支付---此次銷售支付的金額
下面這個表包含了關于2006年的3218次銷售的數據:
接下來開始應用程序的開發:
創建一個新的應用程序,添加一個TPanel Panel1到主要形式里,這個面板包含了所需要的按鈕,設置面板與底部邊緣對齊(Panel1.Align := alBottom)。
我們將使用ADO連接來訪問數據庫,這些組件默認包含在Delphi(dbGo組件集)里,然而,如果你喜歡,你可以選擇任何其他數據訪問引擎,只要組件的工作表和查詢來自標準Delphi TDataSet類。
添加一個數據庫連接組件(ADOConnection1:TADOConnection)和一個表訪問組件(ADOTable1:TADOTable)到表單,并將它們連接到"Salesdb.mdb"數據庫的"Sales"表,接下來設置ADOConnection1.LoginPrompt = False,跳過數據庫的登錄對話框進行連接。
讓我們轉到現在的FastCube組件。 首先,我們需要三個組件:
fcCube1:TfcCube——該組件負責加載數據、安排并將其存儲在內存中。
fcSlice1:TfcSlice——負責過濾和存儲數據透視表的結構。
fcGrid1:TfcGrid——可視化pivot表,并且允許用戶管理結構和過濾器。
將這三個組件添加到表形式中。
連接fcCube1 到 數據源: fcCube1.DataSet := ADOTable1.
將 fcSlice1 與fcCube1進行連接:fcSlice1.Cube := fcCube1.
將fcGrid1 與 fcSlice1連接: fcGrid1. Slice = fcSlice1.
設置 fcGrid.Align = alClient.
現在我們需要添加一行代碼用來開啟數據加載和激活在OnCreate事件處理程序的形式里的pivot表:
代碼:
你可以運行這個應用程序并創建一個pivot表。
一旦開始,我們看到一個空表,它被定制用來以要求的形式顯示我們的數據。為了做到這一點,我們需要將字段放在行、列和過濾器里并創建措施。
打開打開"字段列表"的下拉菜單,我們在里面可以看見來自源表的字段列表,請注意該列表包含"Day_Date","Day_of_week_Date"和其他"sales"表中并不存在的字段,在"Date"表里,這些字段都是自動的被創建,我們可以通過日期部分創建切片用來過濾。
如果我們想找出這個月總共額銷售數量(但是記住,源表只包含2006年的數據),為了做到這一點,我們需要拖動“Month_Date”到行區域,該領域“成本”數據區域和服務維度“措施”從過濾器來列區域。最后我們得到所需的數據。
接下來再做復雜一點的任務,看一下每個經理的月銷售量,"Manager"領域到列區域,注意"Manager"字段可以放在"Measures"前面,也可以放在后面。
如果想知道季度的銷售量,拖動"Quarter_Date"到行里,啊放在"Month_Date"字段的前面。
如果不需要按月的信息,我們可以拖出"Month_Date"到過濾器區域或者在"Field List"中完全移除它;或者是只是鉆取了“Quarter_Date”這個維度,點擊按鈕以“-”的標志適當定義的季度值,或者是按住“Ctrl”鍵點擊收起月維度。
如果想要知道特定產品的信息,比如"Plastic Box",只需要拖動"Product"到過濾區域,打開下拉列表,就會包含特定產品的信息,正如我們看到的一樣,所有的值檢查——這意味著pivot表是不經過過濾的產品類型。
取消選中所有產品類型,除了"Plastic Box"這一類,取消選擇"Plastic Box",然后再做一個倒置(點擊列表底部的反轉按鈕即可)。
pivot表中的數據已經改變了, 現在它只有塑料盒這個產品了。
在FastCube表中以最簡單的操作我們就可以得到不同標準下的結果和組,同時也不會影響程序員。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:外文翻譯