以區分大小寫的順序排序記錄

重要:  本文係由機器翻譯而成,請參閱免責聲明。本文的英文版本請見這裡,以供參考。

Microsoft Office Access 2007 是以遞增或遞減順序排序記錄,並不區分字母的大小寫。但是,您可以撰寫幾行 Visual Basic for Applications (VBA) 程式碼,依文字的 ASCII 字元值排序文字。根據 ASCII 值排序會區分大寫與小寫字母,並按照字母的大小寫排序順序。

下表說明 Access 中的遞增排序順序與區分大小寫排序順序的差別:

排序前順序

遞增順序

區分大小寫 orde r

c

a

A

D

B

C

a

C

C

d

b

D

B

c

a

C

C

b

A

D

c

b

d

d

雖然 [遞增順序] 欄中的結果乍看起來似乎無法預期,但是事實並非如此。因為當評估為文字值時,無論是小寫還是大寫,始終都是 "A" = "a","B" = "b"。這時,Access 就會考慮這些值的原始順序。在 [排序前順序] 欄中,"a" 位於 "A" 之前,而 "B" 位於 "b" 之前,所以在 [遞增順序] 欄中,"a" 出現在 "A" 之前,"B" 出現在 "b" 之前。

當執行區分大小寫的排序操作時,文字值會以其 ASCII 值來取代。例如,A = 65、a = 97、B = 66、b = 98 等等。

撰寫 VBA 程式碼

  1. 建立 VBA 模組,並在宣告區段中輸入下列行 (若不存在):

Option Explicit

  1. 在 Visual Basic 編輯器的模組中輸入下列程序:

    Function StrToHex (S As Variant) As Variant
    '
    ' Converts a string to a series of hexadecimal digits.
    ' For example, StrToHex(Chr(9) & "A~") returns 09417E.
    '
    Dim Temp As String, I As Integer
    If VarType(S) <> 8 Then
    StrToHex = S
    Else
    Temp = ""
    For I = 1 To Len(S)
    Temp = Temp & Format(Hex(Asc(Mid(S, I, 1))), "00")
    Next I
    StrToHex = Temp
    End If
    End Function

    前面使用者定義的函數 StrToHex 可以從查詢呼叫。當您將排序欄位的名稱傳遞到此函數時,其將以區分大小寫順序排序欄位值。

  2. 現在,建立用於呼叫此函數的查詢。

    [建立] 索引標籤上,按一下 [其他] 群組中的 [查詢設計]

  3. 在 [顯示資料表] 對話方塊中,按一下要排序的資料表,然後按一下 [新增]。

  4. 將所要的欄位拖曳到格線。

  5. 在第一個空白欄中,在 [欄位] 資料列中輸入Expr1: StrToHex([SortField])

    StrToHex 是您先前建立的使用者定義函數。SortField 是包含區分大小寫值的欄位名稱。

  6. 按一下 [排序] 儲存格中的 [遞增] 或 [遞減]。

    如果選擇遞增順序,則以大寫字母開頭的值會出現在以小寫字母開頭的值之前。套用遞減順序排序會產生相反的結果。

  7. 切換為 [資料工作表檢視]。

    Access 即會顯示以區分大小寫順序排序的記錄。

頁面頂端

附註: 機器翻譯免責聲明︰本文係以電腦系統翻譯而成,未經人為介入。Microsoft 提供此等機器翻譯旨在協助非英語系使用者輕鬆閱讀 Microsoft 產品、服務及技術相關內容。基於本文乃由機器翻譯而成,因此文中可能出現詞辭、語法、文法上之錯誤。

擴展您的技能
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與其中一位 Office 支援專員連絡以深入了解您的意見。

×