Access 會以遞增或遞減順序排序記錄,而不考慮大小寫。 不過,您可以撰寫幾行 Visual Basic for Applications (VBA) 程式碼,根據其 ASCII 字元值來排序文字。 根據 ASCII 值排序會區分大寫字母與小寫字母,並產生區分大小寫的排序。
下表示範 Access 中的遞增排序次序與區分大小寫排序次序的差異:
預排序次序 |
遞增排序 |
區分大小寫的排序 |
---|---|---|
c |
a |
A |
D |
A |
B |
a |
B |
C |
d |
b |
D |
B |
c |
a |
C |
C |
b |
A |
D |
c |
b |
d |
d |
雖然遞增排序欄中的結果一開始看起來有些無法預測,但其實不是。 在遞增排序欄中,「a」會出現在「A」之前,而「B」出現在「b」之前。 這是因為當評估為文字值時,「A」=「a」和「B」=「b」,無論小寫或大寫。 Access 會考慮值的原始排序。 在預排序次序欄中,「a」在「A」之前,「B」在「b」之前。
執行區分大小寫的排序作業時,文字值會以 ASCII 值取代。 例如,A = 65、a = 97、B = 66、b = 98 等等。
撰寫 VBA 程式碼
-
建立 VBA 模組,並輸入下列行的宣告區段 (如果尚未存在):
Option Explicit
-
在 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 可以從查詢中呼叫。 當您將排序欄位的名稱傳遞給此函數時,它會以區分大小寫的順序對欄位值進行排序。
-
現在,建立查詢,您將從此查詢呼叫此函數。
在 [建立] 索引標籤的 [查詢] 群組中,按一下 [查詢設計]。
-
選取 [在 Access (中 新增數據表 ] [顯示資料表 ]) 。
-
將您想要的欄位拖曳到方格。
-
第一個空白欄中的 [欄位] 資料列中,輸入 Expr1: StrToHex([SortField])。
StrToHex 是先前建立的使用者定義函數。 SortField 是包含區分大小寫值的欄位名稱。
-
在 [排序] 儲存格中,按一下 [遞增] 或 [遞減]。
如果您選擇遞增排序,以大寫字母開頭的值會出現在以小寫字母開頭的值之前。 使用遞減順序排序會執行相反的排序。
-
切換到資料工作表檢視。
Access 會以區分大小寫的順序顯示記錄。