Applies ToMicrosoft 365 专属 Access Access 2024 Access 2021 Access 2019 Access 2016

可以通过定期存档旧记录或非活动记录来保持 Microsoft Access 数据库的组织和可管理性。 可以存档数据库中的所有表、特定表或仅存档特定记录,例如,早于特定日期的记录。 本主题说明如何使用三个不同的选项来存档 Access 数据库中的数据。

本文内容

何时应考虑存档?

如果计算机上的数据库包含你不再打算使用的数据,但你希望使数据方便,以防你在某个时间点确实需要它,或者为了满足数据保留策略,存档是保留此类数据的好方法。 存档还通常用于根据日期条件(例如在月末)保留数据。

存档数据的方法

下表列出了用于存档数据的方法、方法的说明、何时应使用每种方法的说明以及该方法的其他特定注意事项。

方法

说明

使用场景...

其他注意事项

定期替换表

定期创建特定表的存档副本,并将该表替换为新的空表副本。

表中的所有记录都满足用于确定是否存档的条件。示例:你有一个存储每日极端温度的表。 每年,你都会存档该表,然后从一个空表重新开始。

定期替换所有表

定期创建后端数据库的存档副本,然后将后端数据库替换为新的空数据库。 需要拆分数据库 (数据库,其中包括:包含所有表的后端数据库文件;和一个前端数据库文件,该文件包含) 的所有其他数据库对象。

数据库中大多数表中的所有记录都满足确定是否存档的条件。示例:数据库由具有不同类型的气象数据的多个表组成。 每年对所有表进行存档。

  • 如果有任何查找表 (表用于存储查找值(例如邮政编码或部门) ),则可能需要将数据导入新的后端数据库。

  • 必须手动存档数据库。 不能对此方法使用宏。

定期将记录移动到存档表中

定期运行一个查询,该查询选择要存档的记录,并将数据添加到存档表,然后运行查询以从原始表中选择 (相同的记录) 并删除它们。

表中的某些记录满足用于确定是否存档的条件。示例:如果签入日期至少为一年,则希望存档库事务 (检查) 。

  • 可能必须解决 引用完整性 问题,尤其是在要存档的记录位于 一对多关系 的一侧时。 有关详细信息,请参阅 有关处理引用完整性 的部分。

警告: 如果需要在查询中使用参数,则应创建一个窗体来处理参数。 否则,将面临数据丢失的风险。

处理引用完整性

如果要存档的记录与其他表中的记录相关,则可能必须解决关系问题。 如果要存档的记录是“子”记录, (它们属于 一对多关系 ) 的“多”端,则可以放心地存档它们。 如果要存档的记录是“父”记录 (它们属于 一对多关系 ) 的“一”端,则当您存档它们时,其相关“子”记录可能会:

  • 阻止删除“父”记录。 如果已将“父”记录追加到存档表,则可能会导致问题。

    - 或 -

  • 成为“孤立者”- 属于不存在的“父级”的记录。 这可能会导致使用“孤立”记录的数据库中的数据完整性和功能出现问题。

若要考虑引用完整性,请执行以下步骤:

  1. 确定哪些“子”记录属于要存档的记录。 例如,若要存档在库中借出的资产记录,请首先确定这些资产上是否打开了任何事务,即资产是否已签出但未返回。

  2. 执行下列操作之一:

    • 如果始终可以安全删除“子”记录,请确保关系强制实施引用完整性,并级联删除。 这可确保删除所有相关的“子”记录。

    • 如果“子”记录不能始终安全删除,请考虑存档数据库中的所有表。

    • Create选择没有“子”记录的“父”记录的查询。 然后,使用第一个查询创建存档查询 (请参阅 定期将记录移动到存档表) 部分,而不是使用“父”表。

返回页首

定期替换表

如果要存档表中的所有数据,可以定期将表替换为空副本。

重要: 如果存档的表与其他表相关,则可能需要 解决引用完整性问题。

  1. 在导航窗格中,选择要存档的表,按 Ctrl+C,然后按 Ctrl+V。

  2. 在“ 将表粘贴为 ”对话框中的“ 粘贴选项”下,选择“ 仅结构”,然后单击“ 确定”。Access 将副本命名为 原始表名称的副本

  3. 在导航窗格中,右键单击原始表,然后单击快捷菜单上的“ 重命名 ”。为表指定另一个名称以指示其包含的内容,例如“DailyTemperatureExtremes_archive_2019”。

  4. 在导航窗格中,右键单击空副本,然后单击快捷菜单上的“ 重命名 ”。 使用原始表的名称重命名它。

返回页首

定期替换所有表

如果使用拆分数据库,可以通过将后端数据库替换为空副本来定期替换所有表。

为此,请先准备空副本。 除非数据库的设计发生更改,否则每次存档时都可以重复使用此空副本。 若要存档,只需重命名现有后端数据库以指示它是存档,并将空副本另存为新的后端数据库。

准备后端数据库的空副本

首先,导入后端数据库中所有表的表定义。

  1. 在“文件”选项卡上,单击“新建”,选择“空白数据库”,然后单击“Create”。

  2. 关闭 Table1。

  3. 在“ 外部数据 ”选项卡上的“ 导入 & 链接 ”组中,单击“ 访问”。

  4. “获取外部数据 – 访问数据库 ”对话框中,选择“ 将表、查询、窗体、报表、宏和模块导入当前数据库”,然后单击“ 浏览”。

  5. 在“ 文件打开 ”对话框中,选择后端数据库。 单击“ 打开 ”关闭“ 文件打开 ”对话框,然后单击“ 确定”。

  6. 在“ 导入对象 ”对话框中,单击“ 选项”。

  7. “导入表”下,选择“ 仅定义”。

  8. 在“ ”选项卡上,依次单击“ 全选”、“ 确定”和“ 关闭”。

将数据添加到空副本中的任何查阅表 

对于每个查找表,请执行以下步骤:

  1. 链接到现有后端数据库中的查阅表。

  2. Create追加查询,该查询会将原始记录中的所有记录添加到副本。

将后端数据库替换为空副本

首先,重命名现有后端数据库,以指示它现在是存档数据库。 然后,打开空副本,并使用原始后端数据库名称保存它。

  1. 单击“ 文件 ”选项卡,然后单击“ 将数据库另存为”。 系统可能会提示关闭所有打开的对象;如果是,请单击“ 确定”。 “ 另存为 ”对话框随即打开。

  2. 在) “另存为”对话框顶部的“保存位置”框中 (,请确保将文件保存在与原始后端数据库相同的位置。

  3. 在“ 文件名 ”框中,输入原始后端数据库的名称。

  4. “保存类型 ”框中,选择“ Access Database (*.accdb) ”。

返回页首

定期将记录移动到存档表中

这是一个四步过程,需要创建包含要存档的记录的表的空副本,创建追加查询以将记录从原始表复制到存档表,创建 删除查询 以从原始表中删除存档记录,最后创建一个宏来运行两个可在要存档时运行的查询。 如果按照下面显示的步骤进行操作,则这一看似复杂的过程可能很简单:

步骤 1:Create存档表

步骤 2:Create追加查询将数据复制到存档表

步骤 3:Create删除查询以从原始表中删除数据

步骤 4:Create宏以运行追加和删除查询

步骤 1:Create存档表

若要将所有存档记录保存在一个表中,请执行此步骤一次。 在此步骤中创建的存档表将保存所有存档记录。

若要在创建新存档表时删除旧存档表,可以使用 生成表查询 将数据复制到存档表,而不是执行此步骤。 为此,请跳到 步骤 2

若要在每次存档时使用新的存档表,但还要保留旧存档表,请在创建新存档表之前重命名旧存档表。 如果要基于日期进行存档,请考虑根据旧存档表表示的日期范围命名。

  1. 在导航窗格中,选择要存档的记录的表,按 Ctrl+C,然后按 Ctrl+V。

  2. 在“ 表名称 ”框中,删除“ 复制” 一词,在现有表名称中追加下划线和“存档”一词,然后单击“ 确定”。 例如,如果原始表名为 Transactions ,则存档表名为 Transactions_archive

    粘贴表方式

  3. 在“ 粘贴表为 ”对话框中的“ 粘贴选项”下,选择“ 仅结构”。

步骤 2:Create追加查询将数据复制到存档表

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

  2. 添加包含要存档的记录的表。

  3. 在查询设计窗口中,双击刚添加的表中的星号 (*) 。 表名称和星号显示在查询设计网格的第一列中。

    注意: 星号指示查询应在查询输出中包含表中的所有字段。 使用星号时,如果在表中添加或删除了字段,查询输出会相应地进行调整。

  4. 在查询设计窗口中,双击要用于指定要在存档记录之前应满足的条件的字段。 例如,如果 Transactions 表有一个名为 “签入日期”的字段,并且你希望存档该日期超过一年的所有记录,则双击该字段,它将显示在查询设计网格的下一个空列中。

    查询设计网格

    如果要对其他字段使用条件,请重复此步骤。

  5. 使用 “条件” 行为刚添加的字段指定条件。 例如,可以使用“条件”行中的表达式 <#1/1/2019# 指定“签入日期必须早于 2019 年 1 月 1 日”。

    如果条件值在每次存档时都发生更改,则应让查询请求输入。 为此,请使用 “条件” 行中的 参数,以便查询请求输入。 若要使用参数,请像平时一样使用表达式,但不要使用指定的值,而是使用用方括号括起来的简短问题。 例如,可以使用表达式 <[在之前完成的存档事务:],如下所示:

    参数表达式

    有关使用参数的详细信息,请参阅 查询简介一文。

    你可能还希望使用 行来指定备用条件。 有关使用条件的详细信息,请参阅查询条件示例一文。

    提示: 如果使用日期字段指定条件,并且想要存档早于当前日期的所有记录,请在 日期字段的“ 条件 ”行中输入<日期 () 。

  6. 执行下列操作之一:

    如果已创建存档表,请使用追加查询将指定的记录添加到该表:

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

    2. 在“ 追加 ”对话框的“ 表名称 ”框中,选择存档表的名称,然后单击“ 确定”。

      追加到

      在查询设计网格中,将显示 “追加到” 行。

    3. 清除用于指定条件的任何字段的 “追加到 ”行。 (只有星号应具有 Append To.)

      查询设计网格中的“追加到”行

      如果尚未创建存档表,请使用生成表查询通过指定的记录创建存档表:

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

    5. 在“ 生成表 ”对话框的“ 表名称 ”框中,键入存档表的名称,然后单击“ 确定”。

  7. 按 Ctrl+S 保存该查询。

步骤 3:Create删除查询以从原始表中删除数据

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

  2. 添加包含要存档的记录的表。

  3. 在查询设计窗口中,双击刚添加的表中的星号 (*) 。 表名称和星号显示在查询设计网格的第一列中。

  4. 在查询设计窗口中,双击用于在追加查询中指定条件的相同字段。

  5. 使用 “条件” 行为刚添加的字段指定条件。 有关使用条件的详细信息,请参阅查询条件示例一文。

    重要: 如果追加查询或生成表查询使用参数,请确保删除查询也这样做。 另请记住,为这两个查询输入相同的值。 如果输入不同的参数值,可能会丢失数据。 为了帮助防止数据丢失,请考虑使用窗体来收集值,并使查询向表单询问输入值。 有关详细信息,请参阅 查询简介一文。

  6. 在“ 设计 ”选项卡上的“ 查询类型 ”组中,单击“ 删除”。

    “删除”行显示在查询设计网格中。

    查询设计网格中的“删除”行

  7. 按 Ctrl+S 保存该查询。

步骤 4:Create宏以运行追加和删除查询

  1. 在“创建”选项卡上的“宏和代码”组中,单击“”。

  2. 单击 “添加新操作”旁边的下拉箭头,然后单击“ OpenQuery”。

    OpenQuery 操作随即出现,并显示其参数。

  3. 在“ 查询名称 ”框中,选择在 步骤 2 中创建的 (追加或生成表) 查询。

  4. 单击 “添加新操作”旁边的下拉箭头,然后单击“ OpenQuery”。

    OpenQuery 操作随即出现,并显示其参数。

  5. 在“ 查询名称 ”框中,选择在 步骤 3 中创建的删除查询。

  6. 按 Ctrl+S 保存宏。

    如果要存档记录,请运行 宏。

返回页首

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。