本文介绍如何在 Access 中创建和运行生成表查询。 需要复制表数据、存档数据或将查询结果另存为表时,请使用 make 表查询。
如果需要更改或更新现有记录集中的部分数据,例如一个或多个字段,可以使用更新查询。 有关更新查询的详细信息,请参阅创建和运行更新查询。
如果需要向现有表中添加记录(行),请使用追加查询。 有关追加查询的详细信息,请参阅使用追加查询将记录添加到表。
你要做什么?
了解生成表查询
生成表查询从一个或多个表检索数据,并将结果集加载到新表中。 该表可以位于当前数据库中,也可以在另一个数据库中创建它。
通常需要在需要复制或存档数据时创建表查询。 例如,你可能有一个或多个在报表中使用的过去销售数据的表。 这些销售数据不能更改,因为交易至少有一天。 每次需要数据时运行查询都可能需要一段时间,尤其是针对大型数据存储运行复杂查询时。 将数据加载到单独的表中可以减少工作负荷,并为你提供方便的数据存档。 请记住,新表中的数据只是快照。 它与一个或多个源表没有关系。
创建生成表查询的过程遵循以下主要步骤:
- 如果数据库未签名,或者它不驻留在受信任位置,请启用该数据库。 否则,无法运行追加、更新和生成表查询等操作查询。
- 在查询设计视图中,创建一个选择查询,然后修改该查询,直到它返回所需的记录。 可以从多个表中选择数据,并在实际意义上对数据进行反规范化。 例如,可以将客户、发货人和供应商数据放在单个表中,而使用正确规范化表的生产数据库中不会执行这些操作。 可在查询中使用条件来进一步自定义结果集或缩小其范围。 有关规范化数据的详细信息,请参阅 数据库设计基础知识。
- 将选择查询转换为生成表查询,选择新表的保存位置,然后运行查询以创建表。
请勿将生成表查询与更新查询或追加查询相混淆。 需要添加或更改单个字段中的数据时,请使用更新查询。 需要向现有表中的现有记录集添加记录(行)时,请使用追加查询。
创建生成表查询
首先创建选择查询,然后将其转换为生成表查询,从而创建生成表查询。 选择查询可以使用计算字段和表达式来帮助返回所需的数据。 下面的步骤说明了如何创建和转换选择查询。 如果已经有满足需要的选择查询,则可以跳至转换选择查询和运行生成表查询的步骤。
创建选择查询
注意
如果已经有产生所需数据的选择查询,请转到下一节中的步骤。
- 在“创建”选项卡上的“查询”组中,单击“查询设计”。
- 双击要从中检索数据的表。 每个表都显示为查询设计器上半部分的一个窗口。 添加完表后,单击“ 关闭 ”。
- 在每个表中,双击要在查询中使用的字段。 每个字段均显示在设计网格“字段”行中的一个空白单元格中。 下图显示的是添加了多个表字段的设计网格。
- (可选)向“字段”行添加任何表达式。
- (可选)向设计网格的“条件”行添加任何条件。
- 单击“ 运行 ”以运行查询并在数据表中显示结果。
- (可选)更改字段、表达式或条件,然后重新运行查询,直至其返回要置于新表中的数据。
转换选择查询
在设计视图中打开选择查询,或者切换到设计视图。 Access 提供了几种执行此操作的方法:
- 如果查询在数据表中打开,请右键单击查询的文档选项卡,然后单击“设计视图”。
- 如果查询已关闭,请在导航窗格中右键单击该查询,然后单击快捷菜单上的“设计视图”。
在“ 查询设计 ”选项卡上的“ 查询类型 ”组中,单击“ 创建表”。 随即显示“生成表”对话框。
在“表名称”框中,输入新表的名称。 - 或 - 单击向下箭头并选择现有表名称。
执行下列操作之一:
将新表放入当前数据库中
如果当前数据库尚未选中,单击“当前数据库”,然后单击“确定”。
单击“运行”,然后单击“是”以确认此操作。
注意
如果要替换现有表,则 Access 将首先删除该表并要求您确认删除。 单击“是”,然后再次单击“是”以创建新表。
将新表放入其他数据库中
单击“另一数据库”。
在“文件名”框中,输入另一个数据库的位置和文件名。 - 或 - 单击“ 浏览”,使用新的“ 生成表 ”对话框查找其他数据库,然后单击“ 确定”。
单击“确定”关闭第一个“生成表”对话框。
单击“运行”,然后单击“是”以确认此操作。
注意
如果要替换现有表,则 Access 将首先删除该表并要求您确认删除。 单击“是”,然后再次单击“是”以创建新表。
了解有关查询条件和表达式的详细信息
本文中的步骤涉及到查询条件和表达式。 查询条件是一个规则,用于标识要包含在查询中的记录。 如果不想查看一组数据中的所有记录,请使用条件。 例如, 条件 >25 AND <50 返回大于 25 和小于 50的值。 条件(例如) "Chicago" OR "Paris" OR "Moscow" 仅返回这些城市的记录。
有关使用条件的详细信息,请参阅 查询条件的示例。
表达式是数学或逻辑运算符、常量、函数以及计算结果为单个值的字段、控件和属性的名称的组合。 如果需要不直接驻留在表中的数据,请使用表达式。 例如,表达式 [UnitPrice]*[Quantity] 将 字段中的值 UnitPrice 乘以 字段中的值 Quantity 。 可以通过多种方式使用表达式,创建和使用这些表达式可能会变得非常复杂。
有关创建和使用表达式的详细信息,请参阅 生成表达式。
防止禁用模式阻止查询
默认情况下,如果打开的数据库未保存在受信任位置或尚未选择信任,Access 将阻止所有操作查询(追加、更新、删除或进行表查询)运行。
如果尝试运行某动作查询,但貌似无响应,请查看 Access 状态栏中是否显示下列消息:
“此操作或事件已被禁用模式阻止。”
看到该消息时,请执行下列操作:
- 在消息栏的功能区正下方,单击“ 启用内容”。
- 再次运行查询。