依區分大小寫 (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 之前。
在 [預先排序次序] 資料行 中,「a」 在 「A」 前面,而 「B」 在 「b」 之前。
執行區分大小寫的排序作業時,文字值會取代為其 ASCII 值。 例如,A = 65、a = 97、B = 66、b = 98 等等。
以下使用者定義的函數可用於依區分大小寫的順序來排序資料。
Function StrToHex(S As Variant) As Variant
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 函式
前置的使用者定義函數 StrToHex 可以從查詢中進行呼叫。 將排序欄位的名稱傳遞給此函數時,函數會按照區分大小寫的順序來排序欄位值。 以下步驟會說明如何使用此函數。
建立您要從中呼叫此函式的查詢。
在 [ 顯示資料表 ] 對話方塊中,選取您要排序的資料表,然後選取 [ 新增]。
將您要的欄位拖曳至方格。
在第一個空白資料行的 [欄位] 資料列中,輸入 Expr1: StrToHex ([ SortField ]) 。 StrToHex 是您稍早建立的使用者定義函式。 StrToHex 是指之前建立的使用者定義函數,SortField 是欄位的名稱,該欄位包含區分大小寫的值。
在 [ 排序] 儲存格中,選取 [遞增 ] 或 [ 遞減]。 如果您選擇遞增順序,以大寫字母開頭的值會出現在以小寫字母開頭的值之前。 如果選擇遞增的順序,以大寫字母開頭的值便會出現在以小寫字母開頭的值前面,而套用遞減順序的排序則剛好相反。
切換至 [資料工作表檢視]。 Access 會顯示記錄,並以區分大小寫的順序排序。
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。