您目前已離線,請等候您的網際網路重新連線

如何使用 Office 樞紐分析表元件來擷取已篩選的成員的清單

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:302101
本文已封存。本文係以「現狀」提供且不會再更新。
結論
本文將告訴您,如何判斷 Office 樞紐分析表元件的座標軸上的哪些成員已經包含在篩選器。
其他相關資訊
Office 樞紐分析表元件包含隱藏的成員 PivotFilterUpdate,具有 StateOf 屬性,您可能會檢查以判斷某一座標軸上的特定樞紐分析成員的已篩選的狀態。樞紐分析成員 [StateOf 屬性傳回下列值之一: plMemberStateClear (1) plMemberStateChecked (2) 或 plMemberStateGray (3)。樞紐分析成員會 「 清除 」 如果從篩選器 」 檢查 「 如果樞紐分析成員及其所有其子成員中包含篩選器或灰色"如果只有其子成員的部份包含在篩選條件中排除。

注意PivotFilterUpdate 物件是隱藏的成員,在 [Office Web 元件物件模型。這個成員未制訂與,因此,不支援由 Microsoft 技術支援部門。提供本文中所包含之範例程式碼 」 為-是"。

範例 # 1: 使用 OLAP 資料來源

這個第一個範例說明您如何可以使用遞迴與某一座標軸上的樞紐分析成員來擷取每個成員和其子成員的狀態,或擷取包含在篩選條件中那些成員的清單。這個範例使用 OLAP 資料來源 (隨附於 8.0 版 Microsoft SQL Server 分析服務在 FoodMart 2000 資料庫)。
  1. 下列程式碼貼在任何文字或 HTML 編輯器中。

    附註下列程式碼使用 樞紐分析表 物件的 Office XP 版本。針對 樞紐分析表 物件的 [Office 2003] 版本成值 clsid:0002E552-0000-0000-C000-000000000046 在程式碼中與 clsid:0002E55A-0000-0000-C000-000000000046。
    <HTML><BODY><OBJECT ID="PTable" CLASSID="CLSID:0002E552-0000-0000-C000-000000000046" WIDTH="100%" HEIGHT="60%"><PARAM name="AutoFit" value="False"></PARAM></OBJECT><P/><TABLE WIDTH="100%" HEIGHT="35%"> <TR>  <TD WIDTH="35%" VALIGN="Top">   <SELECT NAME="lstFieldSets" STYLE="width:'100%'">    <OPTION VALUE="1" SELECTED>Time</OPTION>    <OPTION VALUE="2">Store</OPTION>    <OPTION VALUE="3">Product</OPTION>   </SELECT>   <P/>   <BUTTON ID="Button1" STYLE="width:'100%'">List State of All Members   </BUTTON>   <P/>   <BUTTON ID="Button2" STYLE="width:'100%'">List Selected Members Only   </BUTTON>  </TD>  <TD WIDTH="65%">   <TEXTAREA STYLE="width:'100%';height:'100%'" ID=txtResults>&#xa0;   </TEXTAREA>  </TD> </TR></TABLE><SCRIPT Language="VBScript">Dim c   'For PivotTable constants.Dim oViewDim sResultsDim aStatesFunction Window_OnLoad()   Set c = PTable.Constants   'Connect to the data source.   PTable.ConnectionString = _      "provider=msolap;data source=YourServer;inital catalog=Foodmart 2000;"   PTable.DataMember = "Sales"   Set oView = PTable.ActiveView      'Add Dimensions to the column, row, and filter axes.   oView.ColumnAxis.InsertFieldSet oView.FieldSets("Time")   oView.ColumnAxis.DisplayEmptyMembers = True   oView.RowAxis.InsertFieldSet oView.FieldSets("Store")   oView.RowAxis.DisplayEmptyMembers = True   oView.FilterAxis.InsertFieldSet oView.FieldSets("Product")   'Add a total to the data area.   oView.DataAxis.InsertTotal oView.Totals("Store Sales")   oView.Totals("Store Sales").NumberFormat = "_($* #,##0_)"       aStates = Array("Cleared", "Checked", "Gray")End FunctionFunction Button1_OnClick()    Dim oChildren    Dim sFS    sFS = lstFieldsets.options(lstFieldsets.selectedIndex).Text    Set oChildren = PTable.ActiveView.FieldSets(sFS).Member.ChildMembers    sResults = "State of All Members: " & vbCrLf & vbCrLf    For i = 0 To oChildren.Count - 1        Recurse1 oChildren(i), 0    Next    txtResults.innerText = sResultsEnd FunctionFunction Recurse1(oPM, nLevel)    Dim oFUpd 'OWC10.PivotFilterUpdate    Set oFUpd = oPM.Field.FieldSet.CreateFilterUpdate    sResults = sResults & aStates(oFUpd.StateOf(oPM)-1) & vbTab & _               Space(nLevel * 3) & "- " & oPM.Name & vbCrLf    For i = 0 To oPM.ChildMembers.Count - 1         Recurse1 oPM.ChildMembers(i), nLevel + 1    NextEnd FunctionFunction Button2_OnClick()    Dim oChildren    Dim sFS    sFS = lstFieldsets.options(lstFieldsets.selectedIndex).Text    Set oChildren = PTable.ActiveView.FieldSets(sFS).Member.ChildMembers    sResults = "Selected Members: " & vbCrLf & vbCrLf    For i = 0 To oChildren.Count - 1        Recurse2 oChildren(i)    Next    txtResults.innerText = sResultsEnd FunctionFunction Recurse2(oPM)    Dim oFUpd 'OWC10.PivotFilterUpdate    Dim nState    Set oFUpd = oPM.Field.FieldSet.CreateFilterUpdate    nState = oFUpd.StateOf(oPM)    'If the member is checked, then we can assume that all of     'its child members are also checked and not drill down any further.    If nState = c.plMemberStateChecked Then        sResults = sResults & oPM.UniqueName & vbCrLf    'If the member is gray, check to see which of its child members    'are included.    ElseIf nState = c.plMemberStateGray Then        For i = 0 To oPM.ChildMembers.Count - 1            Recurse2 oPM.ChildMembers(i)        Next    'If the member is cleared, there's no reason to    'drill down any further.    ElseIf nState = c.plMemberStateClear Then    End IfEnd Function</SCRIPT></HTML>					
  2. 在樞紐分析表連接字串中 YourServer 取代含有 FoodMart 2000 樣本資料庫的伺服器。
  3. 將檔案儲存為 C:\Filter1.htm。
  4. 啟動 Internet Explorer],並瀏覽至 C:\Filter1.htm。
  5. 一旦樞紐分析表已連接至資料來源,請依照下列步驟執行:
    1. 將您所選擇的篩選器套用到任何一種座標軸。
    2. 在清單中選取您所篩選的欄位集名稱。
    3. 按一下 [清單] 狀態的所有成員]。文字區域中產生的文字會列出所有成員和子系成員,並指出是否每一個清除,核取,或灰色。
    4. 按一下 [清單] 選取僅限成員。文字區域中產生的文字列出欄位集選取,或篩選條件中包含這些成員唯一的名稱。
  6. 重複先前步驟中,其餘的軸成員的。

範例 # 2: 使用傳統資料來源

為樞紐分析表是繫結至傳統資料來源,您可以使用第一個範例所述的方法來擷取篩選器狀態的上座標軸的成員。不過,當您使用 [傳統資料來源,例如 Access 資料庫或 Microsoft Excel 活頁簿遞迴就不需要擷取這項資訊,因為樞紐分析成員沒有多重子成員。這個第二個範例會示範如何擷取沒有遞迴成員狀態。
  1. 請將下列程式碼貼至任何文字或 HTML 編輯器。

    附註下列程式碼使用 樞紐分析表 物件的 Office XP 版本。針對 樞紐分析表 物件的 [Office 2003] 版本成值 clsid:0002E552-0000-0000-C000-000000000046 在程式碼中與 clsid:0002E55A-0000-0000-C000-000000000046。
    <HTML><BODY><OBJECT ID="PTable" CLASSID="CLSID:0002E552-0000-0000-C000-000000000046" WIDTH="100%" HEIGHT="60%"><PARAM name="AutoFit" value="False"></PARAM></OBJECT><P/><TABLE WIDTH="100%" HEIGHT="35%"> <TR>  <TD WIDTH="35%" VALIGN="Top">   <SELECT NAME="lstFieldSets" STYLE="width:'100%'">    <OPTION VALUE="1" SELECTED>Country</OPTION>    <OPTION VALUE="2">Year</OPTION>    <OPTION VALUE="3">ProductName</OPTION>   </SELECT>   <P/>   <BUTTON ID="Button1" STYLE="width:'100%'">List State of All Members   </BUTTON>  </TD>  <TD WIDTH="65%">   <TEXTAREA STYLE="width:'100%';height:'100%'" ID=txtResults>&#xa0;   </TEXTAREA>  </TD> </TR></TABLE><SCRIPT Language="VBScript">Dim c   'For PivotTable constants.Dim oViewFunction Window_OnLoad()   Set c = PTable.Constants    'Connect to the database and provide the commandtext for the rowset.    PTable.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;" & _     "Data Source = C:\Program Files\" & _     "Microsoft Office\Office10\Samples\Northwind.mdb"            PTable.CommandText = _     "SELECT Orders.ShipCountry AS Country, (1-[Discount])*[Quantity]*" & _     "[Order Details].[UnitPrice] AS OrderAmt, Year([OrderDate]) AS " & _     "[Year], [Products].ProductName FROM (Orders INNER JOIN " & _     "[Order Details] ON Orders.OrderID = [Order Details].OrderID) " & _     "INNER JOIN Products ON [Order Details].ProductID = " & _     "Products.ProductID"    Set oView = PTable.ActiveView    'Add fields to the row axis and column axis for grouping.    oView.FilterAxis.InsertFieldSet oView.FieldSets("Country")    oView.RowAxis.InsertFieldSet oView.FieldSets("ProductName")    oView.ColumnAxis.InsertFieldSet oView.FieldSets("Year")    'Add a total for the OrderAmt fieldset.    oView.DataAxis.InsertTotal oView.AddTotal("SalesTotal", _           oView.FieldSets("OrderAmt").Fields(0), c.plFunctionSum)    oView.Totals("SalesTotal").NumberFormat = "$#,##0"End FunctionFunction Button1_OnClick()    Dim oChildren    Dim sFS    Dim oPM   'OWC10.PivotMember    Dim oFUpd 'OWC10.PivotFilterUpdate    Dim aStates    aStates = Array("Cleared", "Checked")  'Possible states    sFS = lstFieldsets.options(lstFieldsets.selectedIndex).Text    Set oChildren = PTable.ActiveView.FieldSets(sFS).Member.ChildMembers    sResults = "State of All Members: " & vbCrLf & vbCrLf        For i = 0 To oChildren.Count - 1        Set oPM = oChildren(i)        Set oFUpd = oPM.Field.FieldSet.CreateFilterUpdate        sResults = sResults & aStates(oFUpd.StateOf(oPM) - 1) & vbTab & _               "- " & oPM.Caption & vbCrLf    Next    txtResults.innerText = sResultsEnd Function</SCRIPT></HTML>					
  2. 在樞紐分析表連接字串中修改以 Northwind.mdb 以符合您的 Office 的安裝路徑。
  3. 將檔案儲存為 C:\Filter2.htm。
  4. 啟動 Internet Explorer],並瀏覽至 C:\Filter2.htm。
  5. 樞紐分析表已連接至資料來源之後,請依照下列步驟執行:
    1. 將您所選擇的篩選器套用到任何一種座標軸。
    2. 在清單中選取您所篩選的欄位集名稱。
    3. 按一下 [清單] 狀態的所有成員]。文字區域中產生的文字會列出所有成員,並指出每一個是清除或核取。
  6. 重複先前步驟中,其餘的軸成員的。
参考
如需有關 Office XP Web 的詳細資訊的元件,請參閱下列 Microsoft 開發 o 人 h 員 û 工 u 具 ã 網路 (MSDN) 網站:
與 Visual Studio 的 Microsoft Office 程式開發
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx

Microsoft Office 程式開發 」
http://msdn.microsoft.com/office
樞紐分析表 pivotlist owc owc10 includedmembers excludedmembers pivotmember

警告:本文為自動翻譯

內容

文章識別碼:302101 - 最後檢閱時間:01/10/2015 13:11:27 - 修訂: 4.2

Microsoft Office XP Web Components, Microsoft Office 2003 Web Components, Microsoft Internet Explorer 5.0, Microsoft Internet Explorer 5.01, Microsoft Internet Explorer 5.5

  • kbnosurvey kbarchive kbmt kbhowto kbofficewebpivot KB302101 KbMtzh
意見反應