使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

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 代码

  1. 创建 VBA 模块,在"声明"部分中键入以下一行(如果尚未显示):

    Option Explicit

  2. 在 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。 将排序字段的名称传递到这个函数时,它将按照区分大小写的顺序对字段值进行排序。

  3. 现在,创建将调用此函数的查询。

    “创建”选项卡上的“查询”组中,单击“查询设计”

  4. 选择 "添加表格表格中显示 表格 Access 2013)。

  5. 将需要的字段拖至网格。

  6. 在首张空白列中的 字段 行中,键入 Expr1:StrToHex[SortField])

    StrToHex 是之前创建的用户定义函数。 SortField 是包含区分大小写的值的字段名称。

  7. 排序 单元格中,点击 升序降序

    如果选择升序,以大写字母开头的值将显示在以小写字母开头的值之前。 应用降序排序会反向应用。

  8. 切换到“数据表视图”。

    Access 按区分大小写的顺序排列显示记录。

返回页首

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×