本文介绍如何创建和运行追加查询。 当要使用来自其他源的数据向现有表添加新记录时,需使用追加查询。
如果要对现有记录集中的数据进行更改,例如更新字段的值,可使用更新查询。 如果要从所选数据中创建一个新表,或将两个表合并为一个新表,可使用生成表查询。 有关更新查询或生成表查询的详细信息,或有关将记录添加到数据库或更改现有数据的其他方法的一般信息,请参阅另请参阅部分。
本文内容
概述
追加查询从一个或多个数据源中选择记录,并将所选记录复制到现有表中。
例如,假设你有一个数据库,它包含一个有潜在新客户的表,但你的现有数据库中已有一个存储着类似数据的表。 由于想将这些数据存储在同一位置,因此决定将其从新数据库复制到现有的表中。 为了避免手动输入新数据,可使用追加查询来复制记录。
使用追加查询的优势
通过使用查询来复制数据,可以:
-
一次追加多条记录 如果手动复制数据,则通常必须执行多次复制/粘贴操作。 通过使用查询,可以一次选择所有数据并复制。
-
在复制选择内容之前对其进行复查 在复制数据之前,可以在数据表视图中查看选择的内容,并可根据需要对选择内容进行调整。 如果查询包含条件或表达式,并且需要多次尝试使其正确运行,则此功能尤其方便。 不能撤消追加查询。 如果操作错误,则必须手动或使用删除查询从备份还原数据库或更正错误。
-
使用条件优化选择 例如,你可能希望仅追加所在城市中的客户的记录。
-
在目标表中不存在数据源中的一些字段的情况下追加记录 例如,假设现有客户表有十一个字段,而要从中复制的新表仅有这十一个字段中的九个字段。 可以使用追加查询复制匹配的九个字段中的数据,而将另两个字段留空。
追加查询的基本步骤
创建追加查询的过程遵循以下基本步骤:
-
创建选择查询 首先选择要复制的数据。 可以根据需要调整选择查询,并根据需要多次运行它,以确保选择要复制的数据。
-
将选择查询转换为追加查询 选择准备就绪后,可以将查询类型更改为“追加”。
-
为追加查询中的每一列选择目标字段 在某些情况下,Access 将自动选择目标字段。 你可以调整目标字段,或在 Access 没有自动选择的时候自行进行选择。
-
预览并运行查询以追加记录 在追加记录前,可以先切换到数据表视图来预览追加的记录。
重要: 无法撤消追加查询。 请考虑备份数据库或目标表。
创建和运行追加查询
本节内容
步骤 1:创建查询以选择要复制的记录
-
打开包含要复制的记录的数据库。
-
在“创建”选项卡上的“查询”组中,单击“查询设计”。
-
双击包含要复制的记录的表或查询,然后单击“关闭”。
表或查询在查询设计器中显示为一个或多个窗口。 每个窗口会列出表或查询中的字段。 下图展示了查询设计器中的一个典型表。
1. 查询设计器中显示的资产表
2. “查询”设计网格
-
双击要追加的每个字段。 所选字段会出现在查询设计网格的“字段”行中。
源表中字段的数据类型必须与目标表中字段的数据类型兼容。 文本字段与大多数其他类型的字段兼容。 数字字段仅与其他数字字段兼容。 例如,可以将数字追加到文本字段,但不能将文本追加到数字字段。
也可以使用表达式作为字段,例如通过 =Date() 自动返回今天的日期,还可以在设计网格中使用具有表或查询字段的表达式来自定义所选数据。 例如,如果目标表有一个存储四位数年份的字段,而源表有一个常规日期/时间字段,则可以将 DatePart 函数与源字段一起使用,以便仅选择年份。
若要快速添加表中的所有字段,请双击表字段列表顶部的星号 (*)。 下图显示添加了所有字段的设计网格。
-
或者,可以在设计网格的“条件”行中输入一个或多个条件。 下表显示了一些示例条件,并说明了其作用于查询的效果。
条件
效果
> 234
返回所有大于 234 的数字。 若要查找所有小于 234 的数字,请使用 < 234。
>= "Callahan"
返回从 Callahan 直至字母表末尾的所有记录。
Between #2/2/2017# And #12/1/2017#
返回从 2017 年 2 月 2 日到 2017 年 12 月 1 日 (ANSI-89) 的所有日期。 如果数据库使用 ANSI-92 通配符,则使用单引号 (') 替代井号。 例如: Between '2/2/2017' And '12/1/2017'。
Not "德国"
查找字段的具体内容并不完全等于“德国”的所有记录。 此条件将返回包含除了“德国”以外的其他字符的记录,例如“德国(欧元)”或“欧洲(德国)”。
Not "T*"
查找不以 T 开头的所有记录。如果数据库使用 ANSI-92 通配符字符集,则使用百分号 (%) 替代星号 (*)。
Not "*t"
查找不以 t 结尾的所有记录。 如果数据库使用 ANSI-92 通配符字符集,则使用百分号替代星号。
In(加拿大,英国)
在列表中,查找包含“加拿大”或“英国”的所有记录。
Like "[A-D]*"
在文本字段中,查找以字母 A 到 D 开头的所有记录。如果数据库使用 ANSI-92 通配符字符集,则使用百分号替代星号。
Like "*ar*"
查找包含字母序列“ar”的所有记录。 如果数据库使用 ANSI-92 通配符字符集,则使用百分号替代星号。
Like "Maison Dewe?"
查找以 "Maison" 开头并且包含的第二个字符串为 5 个字母[其中前 4 个字母为 "Dewe" 但最后一个字母未知(用问号表示)]的所有记录。 如果数据库使用 ANSI-92 通配符字符集,则使用下划线 (_) 替代问号。
#2/2/2017#
查找 2017 年 2 月 2 日的所有记录。 如果数据库使用 ANSI-92 通配符字符集,则使用单引号(而不是井号 (#))括起日期。 例如:'2/2/2017'。
< Date() - 30
返回 30 天以前的所有日期。
Date()
返回包含当天日期的所有记录。
Between Date() And DateAdd("M", 3, Date())
返回从今天起三个月内的所有记录。
Is Null
返回包含 Null(空或未定义)值的所有记录。
Is Not Null
返回包含值的所有记录。
""
返回包含零长度字符串的所有记录。 当需要向必填字段添加值但还不知道添加什么值时,使用零长度字符串。 例如,某个字段可能需要传真号码,但有些客户可能没有传真机。 在这种情况下,可以输入中间没有空格的一对双引号 ("") ,而不输入号码。
-
在“ 查询设计 ”选项卡上的“ 结果 ”组中,单击“ 运行 ”。
-
验证查询是否返回了要复制的记录。 如果需要向查询中添加字段或者从查询中删除字段,请切换回设计视图并按照上一步中的说明添加字段,或者选择不需要的字段并按 Delete 将其从查询中删除。
步骤 2:将选择查询转换为追加查询
-
在“开始”选项卡上的“视图”组中,单击“视图”,然后单击“设计视图”。
-
在“ 查询设计 ”选项卡上的“ 查询类型 ”组中,单击“ 追加”。
将出现“追加”对话框。
-
接下来,指定是将记录追加到当前数据库中的表,还是追加到其他数据库中的表。
执行下列操作之一:
-
在“追加”对话框中,单击“当前数据库”,从“表名称”组合框中选择目标表,然后单击“确定”。
-或-
-
在“追加”对话框中,单击“其他数据库”。
-
在“文件名”框中,输入目标数据库的位置和名称。
-
在“表名称”组合框中,输入目标表的名称,然后单击“确定”。
-
步骤 3:选择目标字段
选择目标字段的方式取决于您在步骤 1 中如何创建选择查询。
您的操作 |
Access... |
---|---|
添加了源表或源查询中的所有字段 |
将目标表中的所有字段添加到设计网格中的“追加到”行中 |
将个别字段添加到查询或使用了表达式,并且源表和目标表中的字段名匹配 |
自动将匹配的目标字段添加到查询中的“追加到”行中 |
添加了个别字段或使用了表达式,并且源表和目标表中有的名称不匹配 |
添加匹配的字段,而将不匹配的字段留空 |
如果 Access 将字段留空,则可单击“追加到”行中的单元格并选择目标字段。
该图展示了如何单击“追加到”行中的单元格并选择目标字段。
注意: 如果保留目标字段为空,则查询不会将数据追加到该字段。
步骤 4:预览并运行追加查询
-
若要预览所做的更改,请切换到数据表视图。
提示: 若要快速切换视图,右键单击查询顶部的选项卡,然后单击所要的视图。
-
返回到“设计”视图,然后单击“ 运行 追加记录。
注意: 在运行返回大量数据的查询时,可能会收到错误消息,指示您将无法撤消查询。 请尝试将内存段限制增加到 3MB 以允许完成查询。
防止禁用模式阻止查询
如果尝试运行某个追加查询,但好像没有什么反应,请查看 Access 状态栏中是否显示以下消息:
“此操作或事件已被禁用模式阻止。”
若要修复此错误,请单击消息栏中的“启用内容”,以启用查询。
注意: 启用追加查询时,将同时启用所有其他数据库内容。
如果看不到消息栏,则它可能处于隐藏状态。 只要消息栏未被禁用,就可以显示它。 如果消息栏已被禁用,可以启用它。