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