查找具有最近或最早日期的记录

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

本文介绍如何使用上限值查询来查找一组记录中的最近或最早日期。您可以使用此类查询返回要应答多种业务问题,例如客户上次下订单的信息。

您要做什么?

了解如何上限值查询处理日期

查找最近或最早日期

查找类别或组中的记录的最新或最早日期

查找最新和最早日期

了解如何上限值查询处理日期

当您需要查找包含表或组记录中的最新或最早日期的记录,您可以使用上限值查询。然后,您可以使用数据来回答几种类型的业务问题,例如 ︰

  • 何时员工上次进行销售?答案可以帮助您确定最高或最高效率的员工。

  • 何时客户上次下订单?如果客户具有未放置在给定期间内的时间顺序,您可能想要移动到非活动列表的客户。

  • 哪些人有下一个或下一步 n 生日?

创建和使用上限值查询规则

您可以通过首先创建选择查询创建上限值查询。根据所需的结果,到查询中,应用排序顺序,或将查询转换为总计查询。如果转换该查询,然后使用聚合函数,如MaxMin返回最高或最低值或名字姓氏返回最早或最新日期。仅当您需要查找分为一组的组或类别的数据时,请使用总计查询和聚合函数。例如,假设您需要查找您的公司的运行每个城市的给定日期的销售号码。在的情况下,城市将成为的类别 (您需要查找数据,每个城市),因此您所使用的总计查询。

执行操作时,请记住 ︰ 无论查询类型,您的查询必须使用包含描述性的数据,例如客户姓名和还包含您要查找的日期值的字段的字段。此外,日期值必须位于设置为日期/时间字段中的数据类型。本文介绍的查询失败,如果您尝试运行它们来在一个文本字段中的日期值。此外,如果您想要使用总计查询,您的数据字段必须包含类别的信息,如城市或国家/地区字段。

上限值查询和筛选器之间进行选择

若要确定您是否应创建上限值查询或应用筛选器,请选择下列选项之一 ︰

  • 如果您想要在字段中,返回具有最近或最新日期的记录和您不知道的确切日期值,或他们不重要,您可以创建上限值查询。

  • 如果您想要返回日期匹配的位置,所有记录早于或晚于特定日期,使用筛选器。例如,若要查看的日期之间年 4 月和年 7 月的销售额,您可以应用筛选器。筛选器的完整讨论超出了本主题。

    有关创建和使用它们,请参阅文章的详细信息筛选 ︰ 限制视图中的记录数

返回页首

查找最近或最早日期

本部分中的步骤解释如何创建基本的上限值查询使用排序顺序,以及更高级的使用表达式和其他条件的查询。第一部分演示创建上限值查询中的基本步骤,第二部分介绍了如何通过添加条件查找下一步的几个员工生日。步骤使用下面的示例表中的数据。

姓氏

名字

地址

城市

国家/地区

出生日期

聘用日期

1 Main St.

New York

USA

1968-02-05

1994-06-10

Heloo

Waleed

52 1st St.

Boston

USA

1957-05-22

1996-11-22

Pica

Guido

3122 75th Ave. S.W.

Seattle

USA

1960-11-11

2000-03-11

Bagel

Jean Philippe

1 Contoso Blvd.

London

英国

1964-03-22

1998-06-22

Price

Julian

Calle Smith 2

墨西哥城

墨西哥

1972-06-05

2002-01-05

Hughes

Christine

3122 75th St. S.

西雅图

USA

1970-06-23

1999-04-23

斯闻

67 Big St.

Tampa

USA

1964-04-14

2004-10-14

Birkby

Dana

2 Nosey Pkwy

波特兰

USA

1959-10-29

1997-03-29

如果需要,您可以输入此示例数据到一个新表手动,也可以将此示例表复制到电子表格程序,如Microsoft Office Excel 2007,,然后使用 Access 导入表得到的工作表。

显示方法

手动输入的示例数据

  1. “创建”选项卡上的“表”组中,单击“表”

    Access 会添加到您的数据库的新的空白表。

    注意: 您不需要执行此步骤,如果打开一个新的空白数据库,但您将需要按照您需要向数据库添加表格。

  2. 双击标题行中的第一个单元格并键入示例表中的域的名称。

    默认情况下,Access 在表示空白字段标题行中使用文本添加新字段,如下所示 ︰

    数据表中的新字段

  3. 使用箭头键移动到下一个空白页眉单元格,并键入第二个字段的名称 (您可以按 TAB 或者双击新单元格)。重复此步骤,直到输入所有字段的名称。

  4. 示例表中输入数据。

    输入数据时,Access 会推断出的每个字段的数据类型。如果您不熟悉关系数据库,您应设置特定的数据类型,如数字、 文本或日期/时间,对于每个表中的字段。设置数据类型有助于确保数据输入正确,并有助于防止出现错误,例如在计算中使用电话号码。这些示例表,您应该告知推断数据类型的访问。

  5. 完成输入完数据后,单击保存

    键盘快捷方式按 CTRL + S。

    将显示“另存为”对话框。

  6. 表名称框中,键入示例表的名称,然后单击确定

    您使用的每个示例表的名称,因为操作方法部分中的查询中使用的那些名称。

  7. 您创建的每个开头的此部分中列出的示例表之前,请重复这些步骤。

将表复制到电子表格程序

  1. 启动电子表格程序并创建一个新的空白文件。如果您使用 Excel 时,默认情况下创建一个新的空白工作簿。

  2. 复制上一节中提供的示例表并将其粘贴到第一个工作表,起的第一个单元格。

  3. 右键单击工作表选项卡并单击重命名,将工作表的员工

  4. 将电子表格文件保存到适当的位置,然后转到下一步骤。

导入 Access 表

  1. 在新的或现有数据库中 ︰

    外部数据选项卡上的导入组中,单击Excel

    - 或 -

    单击更多,,然后从列表中选择电子表格程序。

    获取外部数据-程序名电子表格对话框中显示。

  2. 单击浏览,打开您在前面的步骤中创建电子表格文件,然后单击确定

    导入电子表格向导启动。

  3. 默认情况下,该向导选择第一个工作表中的工作簿 (员工,如果您已按照上一节中的步骤) 和工作表中的数据显示在屏幕下半部分。单击下一步

  4. 单击第一行包含列标题,然后单击下一步

  5. (可选),使用文本框和在域选项下的列表更改字段名称和数据类型或省略导入过程中的字段。否则,单击下一步

    如果您使用上面的示例表,您不需要在此时进行任何更改。

  6. 保持选中状态,让 Access 添加主键的选项,然后单击下一步

  7. 默认情况下,Access 适用于您的新表的工作表的名称。接受的名称或另一个名称,输入,然后单击完成

注意: 如果您没有电子表格程序,您可以将示例数据复制到记事本等文本编辑器。有关导入文本数据的详细信息,请参阅导入或链接文本文件中的数据一文。

创建基本的上限值查询

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

    显示显示表对话框。

  2. 在对话框中,单击您想要在查询中使用了单击添加将表放在设计器的上半部分中,然后单击关闭表。

    - 或 -

    双击表中,,然后单击关闭

    如果您使用的示例数据,请在查询中添加雇员表。

  3. 添加您想要使用您在查询设计网格中的字段。您可以双击每个字段,或拖放在一个空白单元格,在字段行中的每个字段。

    如果您使用的示例表,添加的名字、 姓氏和出生日期的字段。

  4. 在字段中包含您顶部或底部的值 (出生日期字段中,如果使用示例表),单击排序行,然后选择升序降序

    降序排序顺序返回的最新日期,并升序排序顺序返回的最早日期。

    重要: 仅对包含日期的字段的排序行中,您必须设置一个值。如果指定了另一个字段的排序次序,查询不返回所需的结果。

  5. 设计选项卡的工具组中,单击所有上限值列表),和或者旁边的向下箭头输入您想要查看,或从列表中选择一个选项的记录数。

  6. 单击运行 按钮图像 以运行查询并在数据表视图中显示结果。

  7. 保存该查询并将其打开以供使用保留在后续步骤。

您可以查看此类上限值查询可以回答基本的问题,例如谁是最早的顺序或公司中的最新的人员。下面的步骤解释如何使用表达式和其他条件来添加到查询的功能和灵活性。下一步中所示的条件返回三个员工生日。

向查询添加条件

注意: 这些步骤假设您将使用上一节中介绍的查询。

  1. 切换到设计视图前面的步骤创建的查询。

  2. 在查询设计网格中,在出生日期列的右侧列中,复制和粘贴或键入以下表达式 ︰表达式 1: DatePart ("m",[出生日期])。然后单击运行

    DatePart函数提取出生日期字段的月部分。

  3. 切换到设计视图。

  4. 右侧的第一个表达式,粘贴或键入以下表达式 ︰表达式 2: DatePart ("d",[出生日期])。然后单击运行

    在此例中, DatePart函数提取出生日期字段的日期部分。

  5. 切换到设计视图。

  6. 清除您刚输入的两个表达式的每个显示行中的复选框单击每个表达式,排序行,然后选择升序

  7. 单击“运行”

  8. (可选) 您可以指定条件来限制查询的范围。当指定条件时,查询对符合条件,记录进行排序,它标识的顶部或底部字段值从排序列表中。

    若要继续的示例数据,请切换到设计视图。然后,在出生日期条件行中,键入以下表达式 ︰

    Month ([出生日期]) > Month(Date()) 或月 ([出生日期]) = Month(Date()) 和天 ([出生日期]) > Day(Date())

    此表达式执行下列操作 ︰ Month ([出生日期]) > Month(Date())部分将检查每个员工的出生日期,以查看是否它位于未来月并且,如果为 true,则在查询中包含这些记录。Month ([出生日期]) = Month(Date()) 和 Day([Birth Date]) > Day(Date())表达式部分检查在当前月份,以查看其生日是否在指定日期或当前日期之后发生的出生日期。如果该条件为真,该函数将在查询中包括这些记录。若要汇总 ︰ 此表达式将忽略的任何位置生日之间年 1 月 1 和运行查询的日期的记录。

    若要查看查询条件表达式的更多示例,请参阅查询条件示例一文。

  9. 设计选项卡的工具组中,单击所有上限值列表),和或者旁边的向下箭头输入您想要查看,或从列表中选择一个选项的记录数。

    若要查看的三个生日,键入3

  10. 单击运行 按钮图像 以运行查询并在数据表视图中显示结果。

如果您看到比您指定的更多记录

如果数据中包含多个共享的日期值的记录,则上限值查询可能返回比您指定的更多数据。例如,您可以设计上限值查询来检索三个员工记录,但查询将返回四个记录因为"孙"和"Edwards"共享生日,如下表所示。

姓氏

出生日期

Berka

9/26/1968

杰克逊

1970 年 10 月 2 日

Edwards

10/15/早出现于 1965

Wilson

10/15/1969

如果您将看到比您指定的更少的记录

假设您设计查询返回的顶部或底部的五个记录,在字段中,但该查询返回只有三个记录。一条规则,您可以通过在设计视图中打开查询并查看设计网格中的列的条件行来解决这种类型的问题。

有关条件的详细信息,请参阅查询条件示例一文。

如果您看到重复记录

如果上限值查询返回重复项,基础表包含重复记录,或者记录显示为重复项,因为查询不包括可以区分记录的字段。例如下, 表显示返回的销售人员处理交易的名称以及最近,发货的五个订单的查询的结果。

发货日期

销售人员

2004 年 11 月 12 日

Freitag

2004 年 11 月 12 日

Cajhen

2004 年 10 月 12 日

黛岚

2004 年 10 月 12 日

黛岚

2004 年 10 月 12 日

Freitag

第三个和第四个记录显示为重复,但很有可能销售人员黛岚处理两个不同的订单附带的同一天。

根据您的要求,您可以执行以避免返回重复记录的两种原因之一。您可以更改查询的设计,以添加有助于区分记录,如订单 Id 和客户 id 字段的字段。或者,如果足以看到仅有一个重复记录,您可以通过查询的唯一值属性设置为中显示不同的记录。若要设置此属性,在查询设计视图中,右键单击上半部分的查询设计器中的空白区域中的任意位置,然后单击快捷菜单上的属性。在查询属性表中,找到唯一值属性,并将其设置为

有关处理重复记录的详细信息,请参阅查找、 隐藏或消除重复数据一文。

返回页首

查找类别或组中的记录的最新或最早日期

总计查询用于查找分为组或类别的记录的最早或最新日期。总计查询是聚合函数,例如MinMaxSum第一个最后一个用于计算给定字段的值的选择查询。

此部分中的步骤假定您运行的事件管理业务 — 小心临时、 照明、 餐饮,和的其他方面的较大的函数。此外,您管理的事件分为多个类别,如产品发布、 常见问题和音乐会。本部分中的步骤解释如何回答常见的问题 ︰ 当时按类别的下一个事件?换言之,当为下一个产品上市、 下一步协同,依此类推。

执行操作时,请记住以下内容 ︰ 默认情况下,您创建下面的总计查询的类型可以包含仅包含您的组或类别数据的字段和包含日期的字段。不能包含描述一个类别,如客户或供应商的名称中的项目的其他字段。但是,您可以创建另一个融合与包含描述性数据的字段的总计查询的查询。在此部分后面的步骤解释如何执行该任务。

本部分中的步骤假定以下三个表的使用 ︰

事件类型表   

类型 Id

事件类型

1

产品上市

2

公司函数

3

私密函数

4

资金筹集

5

展销会

6

讲座

7

协同

8

附件

9

街道展览

“客户”表   

客户 ID

公司

联系人

1

康拓工程有限公司图形

韩乔

2

Tailspin Toys

黄雅玲

3

世邦

康菲菲

4

Wingtip 玩具

廖惠文

5

答 ︰ 基准

单曼丽

6

嘉元实业

高明森孙力

7

设计学会

Jaka Stele

8

学校艺术

Milena Duomanova

事件表   

EventID

事件类型

客户

事件的日期

价格

1

产品上市

康拓工程有限公司

2003 年 4 月 14

¥100,000

2

公司函数

Tailspin Toys

2003 年 4 月 21

¥80,000

3

展销会

Tailspin Toys

2003 年 5 月 1 日

25000 美元

4

附件

Graphic Design Institute

2003 年 5 月 13

¥45,000

5

展销会

康拓工程有限公司

2003 年 5 月 14

$ 55000 个

6

协同

学校艺术

2003 年 5 月 23

¥120,000

7

产品上市

答 ︰ 基准

2003 年 6 月 1 日

¥150,000

8

产品上市

Wingtip 玩具

2003 年 6 月 18

$21,000

9

资金筹集

嘉元实业

2003 年 6 月 22

$ 1300

10

讲座

Graphic Design Institute

2003 年 6 月 25

节约了 2450 美元

11

讲座

康拓工程有限公司

2003-7-4

$ 3,800

12

街道展览

Graphic Design Institute

2003-7-4

$ 5500

注意: 此部分中的步骤假定的客户和事件类型表位于与事件表-一对多关系的"一"端上。在这种情况下,事件表共享客户 Id 和类型 Id 字段。以下各节中介绍的查询不起作用没有这些关系的总计。

如何将此数据添加到数据库

若要向数据库中添加这些示例表,可以按照步骤在较早的部分中,使用顶部或底部的值查找记录,但有几个例外 ︰

  • 事件类型和客户表复制到 Excel 时,请勿复制类型 Id 和客户 id 列。当您导入工作表; access 会将主键值添加为您这可以省去一些操作一些时间。

  • 导入表后,必须在设计视图中打开事件表,并将事件类型和客户列转换为查阅字段。因此,单击每个字段,数据类型列,然后单击查阅向导

    作为创建查阅字段的一部分,Access 将源表中的数字值替换为事件类型和客户列中的文本值。

    有关创建和使用查阅字段的详细信息,请参阅文章使用存储多个值的列表多值字段指南。这两篇文章介绍了如何创建允许您选择的给定字段的多个值,还介绍了如何创建查阅列表的查阅字段的类型。

创建总计查询

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

    显示显示表对话框。

  2. 在对话框中,选择您想要处理,单击添加,然后单击关闭,当您完成添加表的表。

    - 或 -

    双击要使用的表,然后单击关闭。查询设计器的上半部分中显示的每个表。

    如果您使用上面列出的示例表,添加事件和事件类型表。

  3. 双击您要在查询中使用的表字段。确保添加只有组或类别字段和值字段对查询此时。

    如果您使用在前面的三个表中列出的示例数据,您从事件类型表中,事件类型域或事件日期字段从表中添加事件。

  4. (可选) 您可以指定的条件的查询的范围限制。只有满足条件的记录进行排序,并顶部和底部字段值标识该排序列表中。

    例如,如果您想要返回事件私有函数类别中,键入此表达式事件类型列的条件行中 ︰ <>"专用函数"

    若要查看查询条件表达式的更多示例,请参阅查询条件示例一文。

  5. 将查询转换为总计查询中,通过执行下列操作 ︰

    设计选项卡上的显示/隐藏组中,单击汇总

    总计行显示在设计网格中。

  6. 确保总计行中的每个组或类别字段是设置为分组依据,然后将值字段 (使用的顶部或底部的值的字段) 中的汇总行设置为最大值最小值

    最大数值的字段和日期/时间字段中的最新日期或时间值中返回的最大值。最小数值字段和日期/时间字段中的最早日期或时间值中返回最小值。

  7. 设计选项卡的工具组中,单击所有上限值列表),和或者旁边的向下箭头输入您想要查看,或从列表中选择一个选项的记录数。

    在此例中,选择全部,然后单击运行以在数据表视图中显示结果。

    注意: 具体取决于您在步骤 6 中选择的函数,Access 查询中的值字段的名称更改为最大FieldName最小FieldName。如果您使用的示例表,Access 会重命名最大事件日期最小事件日期域。

  8. 保存该查询,然后转到下一步骤。

查询结果不显示产品名称或产品相关的任何其他信息。若要查看其他数据,您需要创建第二个查询的融入了您刚刚创建的查询。下面的步骤解释如何执行此操作。

创建另一个查询以添加更多数据

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

  2. 显示表对话框中,单击查询选项卡,然后双击上一节中创建总计查询。

  3. 单击表格选项卡并添加您的总计查询中使用的表同时添加所有包含其他相关的数据的表。如果您使用的前三个示例表中,将事件类型、 事件和客户表添加到您的新查询。

  4. 加入父表中的对应字段的总计查询中的字段。这样做,请将总计查询中的每个字段拖动到表中的相应字段中。

    如果您使用的三个表中的示例数据,请将总计查询中的事件类型列拖动到事件类型表中的事件类型字段。然后拖动最大事件日期列中的总计查询事件表中的事件日期字段。创建这些联接使您的新选择查询将组合在一起的总计查询中的数据和其他表中的数据。

  5. 从查询中的其他表中添加其他描述性字段。

    如果您使用的三个表中的示例数据,您可以从客户表中添加公司和联系人字段。

  6. (可选) 指定一个或多个列的排序顺序。例如,要列出类别按字母顺序,请将事件类型列的排序行设置为升序

  7. 在“设计”选项卡上的“结果”组中,单击“运行”。

    在数据表视图中显示的查询结果。

提示   如果您不希望显示为最大价格最小价格价格列的标题,请在设计视图中打开查询,并在网格中价格列中,键入价格 ︰ 最大价格价格 ︰ 最小价格价格将显示为数据表视图中的列标题。

返回页首

查找最新和最早日期

顶部或底部的值,但不是能同时,可以返回上文中创建的查询。如果您想要查看两个组的单个视图中的值,您需要创建两个查询 — 一个用于检索上限值,另一个用于检索最低值,然后合并结果并将结果存储在一个表。

顶部和底部的值查找并在表格中显示该数据的过程包括以下主要步骤 ︰

  • 创建上限值和下限值的查询,或者,如果您需要进行分组的数据,创建使用最小值最大值函数的总计查询。

  • 将上限值查询 (或 Max 总计查询) 转换为生成表查询,并创建一个新表。

  • 将下限值查询 (或 Min 总计查询) 转换为追加查询,并将记录追加到上限值表。

    以下各节中的步骤解释如何执行此操作。

    创建查询

    1. 创建顶部和底部的值查询。

      创建顶部或底部的值查询所需的步骤,请参阅本文的早期版本中的查找最近或最早日期,。如果您需要您记录按类别进行分组,请参阅上文的查找类别或组中的记录的最近或最早日期

      如果使用示例表中的最后一节上时,在事件表中使用的数据。使用两个查询中的事件表中的事件类型、 客户和事件日期字段。

    2. 使用有意义的名称,例如最高值和下限值保存每个查询并将它们在下一个步骤中打开以供使用。

创建生成表查询

  1. 将上限值查询设计视图中打开 ︰

    “设计”选项卡上的“查询类型”组中,单击“生成表”

    生成表”对话框显示。

  2. 表名称框中,键入将存储的顶部和底部的记录的表的名称。例如,键入顶部和底部记录,然后单击确定

    每次运行查询,而不是在数据表视图中显示结果,查询创建一个表格,用当前数据替换上限值。

  3. 保存并关闭该查询。

创建追加查询

  1. 与下限值查询设计视图中 ︰

    “设计”选项卡上的“查询类型”组中,单击“追加”

  2. 追加对话框中显示。

  3. 键入您在生成表对话框中键入的相同名称。

    例如,键入顶部和底部记录,然后单击确定。每次运行查询,而不是在数据表视图中显示结果,查询将记录追加到顶部和底部记录的表。

  4. 保存并关闭该查询。

运行查询

  • 现在您可以运行两个查询。在导航窗格中,双击上限值查询,然后单击时,Access 将提示您。双击下限值查询,然后单击时,Access 将提示您。

  • 在数据表视图中打开的顶部和底部记录的表。

重要: 如果您尝试运行生成表或追加查询,但好像没有什么反应,请检查 Access 状态栏中的显示下列消息 ︰

“此操作或事件已被禁用模式阻止。”

如果您看到该消息,请执行以下步骤 ︰

  • 如果尚未显示,则显示消息栏。为此,请在数据库工具选项卡上的显示/隐藏组中,单击消息栏

  • 在消息栏中,单击“选项”。

    将显示“Microsoft Office 安全选项”对话框。

  • 选择启用此内容,然后单击确定

  • 再次运行查询。

有关禁用模式和 Access 安全性的详细信息,请参阅文章Access 2007 数据库安全

返回页首

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

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

此信息是否有帮助?

谢谢您的反馈!

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

×