現在人客說, 想要依不同的登入使用過濾OWC FILTER AREA中的機關list,
真是天殺的需求.
爬了許多文後.....整理如下,有二種做法
第一種, 透過網頁OWC 的屬性設定
1.先到MS KB上去COPY範例
2.在window_onload事件中,找到這一行, aStates = Array("Cleared", "Checked", "Gray"), 把他給刪掉
3.然後加上這三行
oView.FilterAxis.FieldSets("Product").AllIncludeExclude = c.plAllExclude
oView.FilterAxis.Fieldsets("Product").fields("Product Family").includedmembers = Split("Food",",")
PTable.AllowFiltering = false
4.測試網頁, 進入後,你會看到在filter area的product 維度,只有Food被勾起來了,而且,你再也不能對這個維度做任何的修改, 因為 PTable.AllowFiltering = false
這個方法對人客不太實用, 因為會連同其他放在filter area的維度也跟著無法修改了.... 沒屁用,但測出了如何coding filter memers
第二種, 利用as本身的角色授權功能
1.先在http olap虛擬目錄的認證方式改成 基本驗證,
2.在網頁owc 連結as的connection string , 要加入使用者及密碼, 如下
"Data Source=http://SQL2000/OLAP/;Initial Catalog=TEST;Provider=MSOLAP.2;User Id=normaluser;Password=123456;"
按照這篇文章Basic authentication 那段的說明 , 必需使用基本驗證 加上connection string 中的使用者及密碼,才能透過http方式模擬連線使用者.
所以, 既然是走明碼傳輸, 文章也建議你要採用SSL方式,加密傳輸.
3.依需求, 在as中去定義不同的角色, 把維度資料的瀏覽做權限控管
4.最後,想辦法在網頁上動態依登入的使用者去替換connection string 中的使用者及密碼
這個方法人客應該比較尬意, 但測試後, 在AS 2000 OK,可以隨著使用者的切換顯示維度資料
但AS 2005 的角色雖然設定了.(方法和AS2000大同小異)...但網頁卻沒有隨著使用者切換而顯示維度資料
比較二者的差異
1.AS 2000那台主機不在AD中, AS2005那台主機則在AD Domain中
2.網頁測試機本身雖不在AD網域中,但其登入本機的帳號及密碼與AD上一組帳號及密碼相同 所以OWC 連線可以正常, 也可以順利看到預設的維度.
3.但在其他台測試機器開相同網頁,則出現以下錯誤
---------------------------
Microsoft Office 樞紐分析表清單
---------------------------
發生錯誤 0x80004005。沒有進一步的資訊。
JS錯誤內容為 " ActiveX元件,無法產生物件.."
4.相同的測試網頁, 放在windows 7 + IE8 的環境下,且符合上述2的環境下時, oView.FilterAxis.Fieldsets("Product").fields("Product Family").includedmembers = Split("Food",",")
這一段程式碼, 竟然出現, JS錯誤訊息:" 陣列索引超出範圍"
原來, IE8 + SSAS2005 , Split有問題哩.. 改成以下 就OK囉..
oView.FilterAxis.Fieldsets("Product").fields("Product Family").includedmembers = Array ( "Food", "Drink" )
然後, 整個OWC的速度超級無敵慢的.....為什麼連到SA2000的CUBE就很快呢....
亂亂亂.....
在網域環境中 , SSAS 2005 的權限設定 , OWC的顯示, 這款代誌金不係呆人想得卡哩啊簡單啦.....
待續