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 可以从查询中调用。 将排序字段的名称传递给此函数时,将以区分大小写的顺序对字段值进行排序。 下面的步骤说明如何使用此函数。
创建要从中调用此函数的查询。
在“ 显示表 ”对话框中,选择要排序的表,然后选择“ 添加”。
将所需的字段拖到网格中。
在第一个空白列中的 “字段” 行中,键入 Expr1: StrToHex ([ SortField ]) 。 StrToHex 是前面创建的用户定义的函数。 SortField 是包含区分大小写值的字段的名称。
在 “排序” 单元格中,选择“ 升序 ”或“ 降序”。 如果选择升序,则以大写字母开头的值将显示在以小写字母开头的值之前。 应用降序排序则相反。
切换到数据表视图。 Access 显示按区分大小写顺序排序的记录。
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。