文章編號: 155489 - 上次校閱: 2007年1月19日 - 版次: 2.3

ACC: 如何使用程式碼變更交叉資料表查詢中欄名

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
中級使用者: 需要基本巨集]、 [程式碼撰寫,] 以及 [交互操作性技巧。
全部展開 | 全部摺疊

結論

本文將告訴您如何使用應用程式的 Visual Basic 來變更欄名在交叉表查詢中。

本文假設您已熟悉使用 Visual Basic 應用程式以及建立 Microsoft Access 應用程式使用程式設計與 Microsoft Access 所提供的工具。如需有關 Visual Basic 應用程式,請參閱您的建置應用程式與 Microsoft 存取] 手冊版本。

注意: 應用程式的 Visual Basic 稱為存取基本在 Microsoft Access 版本 2.0。如需有關存取基本的詳細資訊,請參閱 < 建置應用程式"手冊。

注意: A 示範這份文件中所使用的技巧可以看到範例檔案 Qrysmp97.exe 中。如需有關如何取得這個範例檔案,請參閱下列文 「 Microsoft 知識庫 」 中的資訊:
182568? (http://support.microsoft.com/kb/182568/EN-US/ ) ACC97: Microsoft Access 97 範例使用中的查詢下載中心

其他相關資訊

您可以程式設計方式變更交叉資料表查詢中欄名的唯一方法是修改 PIVOT 子句的查詢的 [SQL] 屬性。

下列範例會示範如何在 Microsoft Access 中建立交叉資料表查詢。然後它顯示您如何變更查詢的欄標題使用 Visual Basic 應用程式來修改 PIVOT 子句的查詢的 [SQL] 屬性。這個範例使用範例資料庫 Northwind.mdb (或 NWIND.MDB 2.0 中的)。
  1. 開啟範例資料庫 Northwind.mdb (或 NWIND.MDB 2.0 中的)。
  2. 在 [設計] 檢視中建立新查詢,並新增 [客戶] 和 [訂貨主檔] 資料表。
  3. 按一下 [查詢] 功能表 [交叉分析。
  4. 在查詢] 格線中新增下列欄位:
           Field: Country
              Total: Group By
              Crosstab: Row Heading
              Sort: Ascending
           Field: Country Total: OrderID (or Order ID in version 2.0)
              Total: Count
              Crosstab: Row Heading
           Field: CompanyName (or Company Name in version 2.0)
              Total: Group By
              Crosstab: Column Heading
           Field: OrderID (or Order ID in version 2.0)
              Total: Count
              Crosstab: Value
  5. 在 [查詢] 功能表上按一下 [執行]。查詢會計算每個客戶的訂單,並依國家/地區群組它們。請注意每位客戶的名稱會顯示為欄標題。
  6. 按一下 [檢視] 功能表 SQL。注意 PIVOT 子句的 SQL 陳述式結尾會讀取 PIVOT Customers.CompanyName; (或"PIVOT 客戶 [供應商];"2.0 版中)。
  7. 將查詢儲存為 qryOrdersByCountry,然後再關閉它。
  8. 一個模組,然後輸入下列命令在 [宣告區段如果它已經不存在:
    外顯的選項
  9. 鍵入下列程序。

    在 Microsoft Access 7.0 和 97:
     Function ChangeColumnHeadings()
          Dim db As DATABASE
          Dim qd As QueryDef
          Dim strSQL as string
          Set db = CurrentDb()
          Set qd = db.QueryDefs("qryOrdersByCountry")
          strSQL = "TRANSFORM Count(Orders.[OrderID]) AS [CountOfOrder ID] "
          strSQL = strSQL & "SELECT Customers.Country, "
          strSQL = strSQL & "Count(Orders.[OrderID]) AS [Country Total] "
          strSQL = strSQL & "FROM Customers INNER JOIN Orders ON "
          strSQL = strSQL & "Customers.[CustomerID] = Orders.[CustomerID] "
          strSQL = strSQL & "GROUP BY Customers.Country ORDER BY "
          strSQL = strSQL & "Customers.Country PIVOT "
          strSQL = strSQL & "IIf(Customers.[CompanyName] Like 'A*', "
          strSQL = strSQL & "'A', 'B-Z');"
          qd.SQL = strSQL
          End Function
    						
    在 Microsoft Access 2.0:
          Function ChangeColumnHeadings()
          Dim db As DATABASE
          Dim qd As QueryDef
          Dim strSQL as string
          Set db = CurrentDb()
          Set qd = db.QueryDefs("qryOrdersByCountry")
          strSQL = "TRANSFORM Count(Orders.[Order ID]) AS [CountOfOrder ID] "
          strSQL = strSQL & "SELECT Customers.Country, "
          strSQL = strSQL & "Count(Orders.[Order ID]) AS [Country Total] "
          strSQL = strSQL & "FROM Customers INNER JOIN Orders ON "
          strSQL = strSQL & "Customers.[Customer ID] = Orders.[Customer ID] "
          strSQL = strSQL & "GROUP BY Customers.Country ORDER BY "
          strSQL = strSQL & "Customers.Country PIVOT "
          strSQL = strSQL & "IIf(Customers.[Company Name] Like 'A*', "
          strSQL = strSQL & "'A', 'B-Z');"
          qd.SQL = strSQL
          End Function
    
    						
  10. 若要測試此函數,在 [偵錯] 視窗 (或在 2.0 版中的 [即時運算] 視窗) 中輸入下列命令並按下 ENTER。
    ?? ChangeColumnHeadings()
  11. 執行 qryOrdersByCountry 查詢。請注意兩個欄標題。一個欄名稱為"A,)"的計算公司名稱起始字母 A 的訂單 ; 一個稱為"B-Z,"的計算以到 Z 的字母 B 開頭的公司名稱的訂單。
  12. 按一下 [檢視] 功能表 SQL。請注意只有文字的 [PIVOT 子句已經從原始的查詢中 SQL。

?考

如需有關的一個 QueryDef 物件的 [SQL] 屬性的詳細資訊,搜尋片語 「 SQL 屬性 」 上的 [說明] 索引並檢視"SQL 屬性"或詢問 Microsoft Access 97 Office 小幫手。

關於使用 IIf() 函式的詳細資訊,搜尋說明索引 」 IIf 函式 」 或詢問 Microsoft Access 97 Office 小幫手。

這篇文章中的資訊適用於:
  • Microsoft Access 2.0 Standard Edition
  • Microsoft Access 95 Standard Edition
  • Microsoft Access 97 Standard Edition
關鍵字:?
kbmt kbhowto kbprogramming kbusage KB155489 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:155489? (http://support.microsoft.com/kb/155489/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
Retired KB Article依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。