对数据进行排序可以在使报表或表单有效且易于使用方面发挥重要作用。 例如,按字母顺序或单价列出产品的产品目录比按随机顺序列出商品的产品目录要容易得多。
本主题说明在查看和设计表、查询、窗体或报表时如何对记录进行排序。
本文内容
简介
可以对表、查询、窗体或报表中的一个或多个字段的记录进行排序。 只需极少的设计工作,您和窗体或报表的用户即可选择记录的排序方式。
例如,在设计产品目录报表时,可以选择按字母顺序列出产品。 设计对象时选择的顺序将成为对象的默认排序顺序。 但是,在查看查询或报表时,每个用户都可以按所需方式对记录进行排序,例如按价格或按供应商。
注意: 视图可以在视图中显示的任何字段上排序,但包含附件或 OLE 对象的字段除外。
可以通过对多个字段上的记录进行排序来微调结果。 对多个字段进行排序时,请务必确定最外层和最内部的排序字段。 需要将适当的字段指定为内部和外部排序字段,才能获得所需的结果。 例如,假设要对“FirstName”和“LastName”字段的“联系人”表进行排序。 如果希望名字在每个姓氏中从 A 到 Z (或 Z 到 A) 排序,则 FirstName 是最内部的字段。 另一方面,如果要在每个名字中对姓氏排序,则 LastName 是最内部的字段。 换句话说,记录首先 (LastName 字段的最外层) 排序,然后在 FirstName 字段 (最内部) 排序。
1. LastName 是最外层的字段,FirstName 是最内部的字段
2. FirstName 是最外层的字段,LastName 是最内部的字段
应用排序顺序时需要记住的一件事是,数字、文本和特殊字符根据计算机的所选语言和区域设置进行排序。 如果在“访问选项”对话框中指定的语言和区域设置与控制面板中指定的语言和区域设置不匹配,则生成的排序顺序可能不符合预期。
查看或更改默认语言或区域
若要查看 Access 中的语言设置,请单击“ 文件 > 选项”。 在“创建数据库”下的“常规”选项卡上,查看或更改“新建数据库排序顺序”列表框中的值。 如果要使用下列语言之一,请将选项设置为 “常规 ”:南非语、阿尔巴尼亚语、阿拉伯语、巴斯克语 (巴斯克语) 、保加利亚语、白俄罗斯语、加泰罗尼亚语、荷兰语、英语、法罗语、波斯语、德语-标准语、希腊语、希伯来语、印地语、印度尼西亚语、意大利语、马来语、葡萄牙语、俄语、塞尔维亚语、斯瓦希里语和乌尔都语。 请注意,此设置仅影响新数据库。 若要将此设置应用于现有数据库,请先 压缩 数据库。
压缩数据库:
-
单击“ 数据库工具 > 压缩和修复数据库”。
若要查看计算机的区域设置,请参阅 更改 Windows 区域设置以修改某些数据类型的外观。
对视图中的记录进行排序
注意: 在 Access 中,对报表进行排序与对表、查询或窗体进行排序略有不同。
对报表进行排序
-
在“布局”视图或“设计”视图中打开报表。
-
如果“分组”、“排序”和“总计”窗格未打开,请在“布局”视图的“格式”选项卡上的“分组 & 汇总” (组中,或者在“设计视图”) 的“设计”选项卡上,单击“分组 & 排序”。
-
执行下列操作之一:
-
如果报表既没有分组也没有排序,请单击“组”、“排序”和“总计”窗格中的“添加组”,然后选择最外层的排序字段。 单击第二个下拉箭头,然后选择值应如何排序。 单击“ 更多”,然后单击 右侧带有标题部分的箭头,然后选择 不带标题部分。 对每个排序字段重复这些步骤,最内部的排序字段显示在底部。
-
如果报表已分组或排序,请查看现有级别并仔细进行更改。 若要更改字段,请使用第一个下拉箭头。 若要更改顺序,请单击第二个下拉箭头。 若要将分组级别更改为仅排序级别,请将 标头部分 更改为 不带标题部分。
-
提示: 若要对单个字段的报表进行排序,请在“布局”视图中打开报表,右键单击该字段,然后选择所需的排序命令。 例如,如果选择“年龄”字段,请单击“ 从最小到最大” 或“ 从最大到最小排序”。 但是,如果报表已分组或要对多个字段进行排序,则必须使用“ 分组”、“排序”和“总计 ”窗格。
对表、查询或窗体进行排序
-
确定要对其排序的字段。 若要对两个或更多字段进行排序,请确定将充当最内部和最外层排序字段的字段。
-
右键单击对应于最内部字段的列或控件中的任意位置,然后单击排序命令之一。 命令因所选字段中的数据类型而异。
注意: 对属于“是/否”数据类型的字段的数据进行排序时,值为“Yes”、“True”或“On”被视为“Selected”,值“No”、“False”或“Off”被视为“Cleared”。 此类型的字段的默认显示是检查框,但你可以将其设置为显示为文本框或组合框。 如果将此类型的字段的显示更改为文本框或组合框,则它仍按“已选择”或“已清除”排序。
1. 数字、货币、自动编号
2. 短文本 (文本) 、长文本 (备注) 、超链接
3.是/否
4.日期/时间
-
对每个排序字段重复上一步,以最外层的排序字段结尾。
记录将重新排列以匹配排序顺序。
注意: 如果文本字段包含 null 和零长度字符串,则按升序排序时,首先列出具有 null 值的记录,然后列出长度为零的字符串的记录,然后列出具有非空值的记录。
了解如何在排序过程中处理特殊字符、前导空格和负值
如果字段中的值以特殊字符(如连字符、括号或其他符号)开头,则按升序排序时将观察到以下行为:
-
以空格字符开头的值将显示在字母数字值之前。
-
用引号括起来的值后跟以空格开头但位于字母数字值前面的值。
-
以减号开头的值 (-) 在以加 (+) 符号开头的值之前。
-
对于所有其他符号,顺序是通过查看字符的 ASCII 字符代码来确定的。 例如,美元符号 ($) 的代码为 36,等号 (=) 的代码为 61,因此以 $ 开头的值将出现在以 =开头的值之前。
若要重写此顺序,可以选择忽略字段中所有值的第一个字符。 如果字段中的值始终以单个特殊字符(如减号)开头,或者具有相同数目的特殊字符(通过这种方式,你知道要忽略多少个字符),则此方法有效。 有关如何对分部值进行排序的分步信息,请参阅 基于字段中的部分值对记录进行排序一文。 如果要忽略的字符数不同,可以指定自定义排序顺序。 有关分步信息,请参阅 文章按自定义顺序对记录进行排序。
-
请记住,不能仅从单个字段删除排序顺序。 若要从所有排序字段中删除排序,请在“ 开始 ”选项卡上的“ 排序 & 筛选器 ”组中,单击“ 清除所有排序”,然后应用所需的排序顺序。
其他排序方案
使用排序命令时,将使用字段的数据类型和每个字段的完整值来确定记录的顺序。 但是,如果希望文本值(如星期一、星期二等)按自定义顺序而不是按字母顺序排序,该怎么办? 或者,是否要对包含 IP 地址的文本字段进行排序? 如果排序命令无法满足排序需求,请参阅以下主题:
-
基于字段中的部分值对记录排序 想要根据字段中的前几个字符或最后几个字符对记录进行排序? 如果习惯编写简单表达式,请参阅本主题,其中介绍如何使用表达式提取部分值。
-
按区分大小写次序对记录排序 Access 忽略文本值大小写。 例如, 史密斯 和 史密斯 的值将被视为完全相同,你无法控制哪个值将首先显示。 如果要执行区分大小写的排序,请参阅本主题。
-
按存储在文本字段中的数值对记录排序 是否看到按单个数字而不是数值排序的记录? 例如,如果值 11 和 121 的记录出现在值 2 或 25 的记录之前,请参阅此文。
-
按自定义顺序对记录进行排序 如果要对某些值(例如星期一、星期二 (日名称等)进行排序,) 或员工职务 (经理、董事) 按对你有意义的顺序排序,请参阅此文。
-
对 IP 地址排序 存储 IP 地址的字段包含多个数字和句点, (。) ,因此简单的文本或数字排序不适用于 IP 地址。 请参阅本主题,了解如何对 IP 地址进行排序。
删除排序顺序
-
若要从表、查询或窗体中删除排序顺序,请在“ 开始 ”选项卡上的“ 排序 & 筛选器 ”组中,单击“ 清除所有排序”。
这将删除视图中所有字段的排序顺序。
-
若要从报表中删除排序顺序,请在“布局”视图中的“格式”选项卡上的“设计”选项卡上,单击“分组 & 汇总” (组中的“分组 & 排序”,打开“组”、“排序”和“总计”窗格) 。 然后,单击要删除的排序级别,然后单击“ 删除”。 与排序字段对应的条目将以 “排序依据”一词开头。 避免删除以 分组依据开头的条目,因为这会更改报表的设计。
使用 对象保存排序顺序
最后应用的排序顺序随表、查询、窗体或报表一起自动保存。 如果希望在下次打开对象时自动应用该对象,请确保对象的 OrderByOnLoad 属性设置为 “是”。
由于上次应用的排序顺序会不时更改,所以可能需要定义永久 (或默认) 排序顺序。 可以为查询或报表指定默认排序顺序。 需要注意的一个重要事项是,尽管默认排序顺序不会被当前或上次保存的排序顺序覆盖,但只有在从视图中删除当前或上次保存的排序顺序时,它才会生效。
-
若要定义查询的默认排序顺序,请在“设计”视图中将其打开。 将排序字段添加到设计网格,并在 “排序” 行中指定所需的顺序。
-
若要定义报表的默认排序顺序,请使用“布局”或“设计”视图中的“ 组”、“排序”和“总计 ”窗格。 有关分步信息,请参阅 对报表进行排序部分。
若要查看按默认排序顺序排序的记录,请在“ 开始 ”选项卡上的“ 排序 & 筛选器 ”组中,单击“ 清除所有排序”。 这会从视图中删除当前或上次保存的筛选器,并允许你按默认顺序查看记录。