blog.Toby

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            130 隨筆 :: 2 文章 :: 150 評(píng)論 :: 0 Trackbacks

          使用微軟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ò)。

           

          - 作者: yuanque 2004年08月26日, 星期四 17:46

          Trackback

          你可以使用這個(gè)鏈接引用該篇日志 http://publishblog.blogdriver.com/blog/tb.b?diaryID=298892

          posted on 2008-08-18 22:07 渠上月 閱讀(1104) 評(píng)論(1)  編輯  收藏 所屬分類: OLAP

          評(píng)論

          # re: 使用微軟OWC中做為聯(lián)機(jī)分析系統(tǒng)前端展示工具 2010-07-06 17:25 喝醉的咖啡
          thanks~

          >不過要注意的是傳參數(shù)時(shí)候要有個(gè)小技巧,就是在服務(wù)器端要將XMLData的屬性值中的<>符號(hào)換成{},而在瀏覽器端要換回來。不然,會(huì)出錯(cuò)。

          是否可以用 htmlencode 和 htmldecode 處理下來解決這一問題?  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 龙泉市| 牟定县| 隆德县| 奉新县| 平南县| 荣昌县| 太保市| 库尔勒市| 库车县| 嫩江县| 犍为县| 香格里拉县| 廊坊市| 固镇县| 肇州县| 阜康市| 璧山县| 汨罗市| 淮南市| 高陵县| 弥渡县| 长泰县| 游戏| 自治县| 罗平县| 黄石市| 平度市| 家居| 固始县| 五寨县| 团风县| 涿州市| 徐汇区| 防城港市| 达孜县| 察雅县| 安国市| 怀安县| 高台县| 鄂伦春自治旗| 远安县|