按区分大小写次序对记录排序

重要:  本文是由机器翻译的,请参阅免责声明。请在 此处 中查找本文的英文版本以便参考。

Microsoft Office Access 2007将按升序或降序排序不区分大小写记录进行排序。但是,通过编写几行的 Visual Basic for Applications (VBA) 代码,您可以按其 ASCII 字符值排序文本。基于 ASCII 值排序区分大写字母从小写字母和区分大小写次序中的结果。

下表演示了 Access 中的升序排序次序与区分大小写排序次序的差异:

预先排序顺序

升序排序

区分大小写合计 r

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"时,=""和"B"= b,是否小写字母或大写字母。Access 将考虑原始订单的值。在预排序顺序列中,""之前"A"和"B"之前"b"。

执行区分大小写排序操作时,文本值被替换为它们的 ASCII 值。例如,A = 65,a = 97,B = 66,b = 98,等等。

编写 VBA 代码

  1. 创建 VBA 模块,并在“声明”节中键入以下行(如果那里还没有它):

Option Explicit

  1. 在 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。将排序字段的名称传递给此函数时,它将按区分大小写的次序对字段值排序。

  2. 现在,创建用来调用此函数的查询。

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

  3. “显示表”对话框中,单击希望排序的表,然后单击“添加”

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

  5. 字段行中的第一个空白列中,键入表达式 1: StrToHex([排序字段])

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

  6. “排序”单元格中,单击“升序”“降序”

    如果选择升序次序,则以大写字母开头的值将出现在那些以小写字母开头的值之前。应用降序次序则以相反方式排序。

  7. 切换至数据表视图。

    Access 将显示记录,这些记录以区分大小写的次序进行排序。

返回页首

注意: 机器翻译免责声明:本文是由无人工介入的计算机系统翻译的。Microsoft 提供机器翻译是为了帮助非英语国家/地区用户方便阅读有关 Microsoft 产品、服务和技术的内容。由于机器翻译的原因,本文可能包含词汇、语法或文法方面的错误。

扩展你的技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×