对记录进行排序(区分大小写 (ASCII))

Access 按升序或降序对记录进行排序,而不考虑大小写。 但是,您可以在查询中使用用户定义的函数按文本数据的 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,等等。

以下用户定义的函数可用于以区分大小写的顺序对数据进行排序。

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 可以从查询中调用。 将排序字段的名称传递给此函数时,将以区分大小写的顺序对字段值进行排序。 下面的步骤说明如何使用此函数。

  1. 创建要从中调用此函数的查询。

  2. 在“ 显示表 ”对话框中,选择要排序的表,然后选择“ 添加”。

  3. 将所需的字段拖到网格中。

  4. 在第一个空白列中的 “字段” 行中,键入 Expr1: StrToHex ([ SortField ]) 。 StrToHex 是前面创建的用户定义的函数。 SortField 是包含区分大小写值的字段的名称。

  5. “排序” 单元格中,选择“ 升序 ”或“ 降序”。 如果选择升序,则以大写字母开头的值将显示在以小写字母开头的值之前。 应用降序排序则相反。

  6. 切换到数据表视图。 Access 显示按区分大小写顺序排序的记录。

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。