blog.Toby

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            130 隨筆 :: 2 文章 :: 150 評論 :: 0 Trackbacks

          使用微軟OWC中做為聯機分析系統前端展示工具[z]- -

                                                

          使用微軟OWC中做為聯機分析系統前端展示工具
          來自:自創 作者:magicspiral 日期:2004年07月02日 瀏覽次數:201

            使用微軟OWC中做為聯機分析系統前端展示工具
            我們在開發聯機分析系統時,經常要在B/S結構下開發,也就是說:聯機分析系統的前端展示工具需要能嵌入到瀏覽器中使用。當然你可以自己開發,但是,在一般的情況下,我們可以使用微軟的OWC組件實現這一功能。
          OWC是Office Web Compent的縮寫,即Microsoft的Office Web組件。實際上,可以把OWC看作是可以在瀏覽器應用的EXCEL。OWC包括三個組成部分:speedsheet,PivotTable 和ChartSpace. Spreedsheet類似于普通的EXCEL 表格,
          PivotTable 即透視表,可用來做聯機分析,(即鉆取,旋轉等)ChartSpace功能等同于EXCEL中的圖表。
            那么,到底如何使用微軟OWC中做為聯機分析系統前端展示工具呢?只要看了幾行簡單的HTML代碼大家就明白了:
          <object classid="clsid:0002E530-0000-0000-C000-000000000046" id="DSC">
          </object>
          上面這句的含義很簡單,就是把微軟的數據連接控件植入網頁。
          <!-- 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植入網頁。
          然后,編寫網頁顯示時的vbscript 代碼
          Sub Window_onLoad()
              Dim frm         'SaveLoad form
             
          ' Set the initial connection string for the DSC
          ‘SetConnection :將DSC與數據倉庫連接
              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//表示圖表的顯示方式是 平滑線圖。有關各種圖表參數請查WIN2000的幫助
             
               

                          '
               
                 
              end if 'Connection OK

             
          End Sub 'Window_onLoad()

          SUB SetConnection(dsc)
          dsc.ConnectionString = "provider=msolap; data source=“數據倉庫服務器的機器名或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()

          核心代碼就這么多,用戶即可使用此網頁做聯機分析。對于鉆取,旋轉等等操作,根本不用程序員去編程。因為,這些都是PivotTable自帶的功能。同理,圖表也不用程序員去編程管理。更奇妙的是,圖表會隨著PivotTable分析內容的不同而自動調整。


            這里要說明的一點是,以上的代碼表明是直接用網頁內嵌的控件連數據倉庫,所以,這種方式還不能算是純正的B/S結構,因為連接的數據倉庫服務器如果在局域網內,則必須是在同一個域內,且數據倉庫服務器必須是域服務器。而如果連接的數據倉庫服務器如果是在互聯網上,則必須加頁面認證,才能聯結。
              有沒有辦法,從服務器端將一個數據集的數據全部取出,然后將此結果傳到瀏覽器端呢?這樣不久可以避開討厭的認證了么?辦法是有的,而且很簡單:就是運用PivotTable的XMLData屬性。關鍵在于服務器端有一個PivotTable,瀏覽器端也有一個PivotTabl。在后臺創建一個PivotTable對象,用以上同樣的連接方法與數據倉庫相連,然后取得此對象的XMLData屬性值,再將這個屬性值傳給網頁上的PivotTable。這樣就搞定了。不過要注意的是傳參數時候要有個小技巧,就是在服務器端要將XMLData的屬性值中的<>符號換成{},而在瀏覽器端要換回來。不然,會出錯。

           

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

          Trackback

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

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

          評論

          # re: 使用微軟OWC中做為聯機分析系統前端展示工具 2010-07-06 17:25 喝醉的咖啡
          thanks~

          >不過要注意的是傳參數時候要有個小技巧,就是在服務器端要將XMLData的屬性值中的<>符號換成{},而在瀏覽器端要換回來。不然,會出錯。

          是否可以用 htmlencode 和 htmldecode 處理下來解決這一問題?  回復  更多評論
            

          主站蜘蛛池模板: 胶南市| 织金县| 麻栗坡县| 贺州市| 阿尔山市| 孟州市| 长沙市| 金阳县| 云南省| 郴州市| 蓬溪县| 安图县| 诏安县| 岫岩| 惠水县| 金门县| 靖远县| 宜黄县| 密山市| 惠来县| 临猗县| 化州市| 通河县| 枣庄市| 自贡市| 密云县| 宁海县| 常宁市| 吴旗县| 新乐市| 门头沟区| 桓台县| 太湖县| 金山区| 鹤岗市| 刚察县| 赤壁市| 兴国县| 伊金霍洛旗| 连云港市| 焉耆|