使用微軟OWC中做為聯(lián)機(jī)分析系統(tǒng)前端展示工具[z]- -
使用微軟OWC中做為聯(lián)機(jī)分析系統(tǒng)前端展示工具
來自:自創(chuàng) 作者:magicspiral 日期:2004年07月02日 瀏覽次數(shù):201 |
使用微軟OWC中做為聯(lián)機(jī)分析系統(tǒng)前端展示工具
我們?cè)陂_發(fā)聯(lián)機(jī)分析系統(tǒng)時(shí),經(jīng)常要在B/S結(jié)構(gòu)下開發(fā),也就是說:聯(lián)機(jī)分析系統(tǒng)的前端展示工具需要能嵌入到瀏覽器中使用。當(dāng)然你可以自己開發(fā),但是,在一般的情況下,我們可以使用微軟的OWC組件實(shí)現(xiàn)這一功能。
OWC是Office Web Compent的縮寫,即Microsoft的Office Web組件。實(shí)際上,可以把OWC看作是可以在瀏覽器應(yīng)用的EXCEL。OWC包括三個(gè)組成部分:speedsheet,PivotTable 和ChartSpace. Spreedsheet類似于普通的EXCEL 表格,
PivotTable 即透視表,可用來做聯(lián)機(jī)分析,(即鉆取,旋轉(zhuǎn)等)ChartSpace功能等同于EXCEL中的圖表。
那么,到底如何使用微軟OWC中做為聯(lián)機(jī)分析系統(tǒng)前端展示工具呢?只要看了幾行簡單的HTML代碼大家就明白了:
<object classid="clsid:0002E530-0000-0000-C000-000000000046" id="DSC">
</object>
上面這句的含義很簡單,就是把微軟的數(shù)據(jù)連接控件植入網(wǎng)頁。
<!-- Chart Control -->
<object classid="clsid:0002E500-0000-0000-C000-000000000046" id="cspace"
style="width:100%;height:60%;display:none" width="576" height="384">
</object>
<!-- PivotTable Control -->
<object classid="clsid:0002E520-0000-0000-C000-000000000046" id="ptable"
width="518" height="384">
</object>
同理:將PivotTable Control和Chart Control植入網(wǎng)頁。
然后,編寫網(wǎng)頁顯示時(shí)的vbscript 代碼
Sub Window_onLoad()
Dim frm 'SaveLoad form
' Set the initial connection string for the DSC
‘SetConnection :將DSC與數(shù)據(jù)倉庫連接
if SetConnection (DSC) then
' Bind the PivotTable to the DSC
再將PivotTable 與DSC連接
BindPivot ptable, DSC
再將PivotTable 與ChartSpace連接
' Bind the Chart to the PivotTable
BindChart ptable, cspace
cspace.Type = OWC.ChartChartTypeEnum.chChartTypeSmoothLineMarkers//表示圖表的顯示方式是 平滑線圖。有關(guān)各種圖表參數(shù)請(qǐng)查WIN2000的幫助
'
end if 'Connection OK
End Sub 'Window_onLoad()
SUB SetConnection(dsc)
dsc.ConnectionString = "provider=msolap; data source=“數(shù)據(jù)倉庫服務(wù)器的機(jī)器名或IP“; initial catalog=FoodMart 2000"
End Sub
Sub BindPivot(ptable, dsc)
' Local variables
Dim ttl 'Temp total reference
' Clear any binding there may be
set ptable.DataSource = nothing
' Bind the PivotTable to the DSC
set ptable.DataSource = dsc
ptable.DataMember = "Sales"
End Sub 'BindPivot()
BindChart
'
' Purpose: Binds the Chart control to the PivotTable control
'
' In:
' ptable PivotTable control reference
' cspace Chart control reference
'
Sub BindChart(ptable, cspace)
set cspace.DataSource = ptable
cspace.Charts.Add
End Sub 'BindChart()
核心代碼就這么多,用戶即可使用此網(wǎng)頁做聯(lián)機(jī)分析。對(duì)于鉆取,旋轉(zhuǎn)等等操作,根本不用程序員去編程。因?yàn)椋@些都是PivotTable自帶的功能。同理,圖表也不用程序員去編程管理。更奇妙的是,圖表會(huì)隨著PivotTable分析內(nèi)容的不同而自動(dòng)調(diào)整。
這里要說明的一點(diǎn)是,以上的代碼表明是直接用網(wǎng)頁內(nèi)嵌的控件連數(shù)據(jù)倉庫,所以,這種方式還不能算是純正的B/S結(jié)構(gòu),因?yàn)檫B接的數(shù)據(jù)倉庫服務(wù)器如果在局域網(wǎng)內(nèi),則必須是在同一個(gè)域內(nèi),且數(shù)據(jù)倉庫服務(wù)器必須是域服務(wù)器。而如果連接的數(shù)據(jù)倉庫服務(wù)器如果是在互聯(lián)網(wǎng)上,則必須加頁面認(rèn)證,才能聯(lián)結(jié)。
有沒有辦法,從服務(wù)器端將一個(gè)數(shù)據(jù)集的數(shù)據(jù)全部取出,然后將此結(jié)果傳到瀏覽器端呢?這樣不久可以避開討厭的認(rèn)證了么?辦法是有的,而且很簡單:就是運(yùn)用PivotTable的XMLData屬性。關(guān)鍵在于服務(wù)器端有一個(gè)PivotTable,瀏覽器端也有一個(gè)PivotTabl。在后臺(tái)創(chuàng)建一個(gè)PivotTable對(duì)象,用以上同樣的連接方法與數(shù)據(jù)倉庫相連,然后取得此對(duì)象的XMLData屬性值,再將這個(gè)屬性值傳給網(wǎng)頁上的PivotTable。這樣就搞定了。不過要注意的是傳參數(shù)時(shí)候要有個(gè)小技巧,就是在服務(wù)器端要將XMLData的屬性值中的<>符號(hào)換成{},而在瀏覽器端要換回來。不然,會(huì)出錯(cuò)。
|
Trackback
你可以使用這個(gè)鏈接引用該篇日志 http://publishblog.blogdriver.com/blog/tb.b?diaryID=298892