存档 Access 数据

应用对象
Microsoft 365 专属 Access Access 2024 Access 2021 Access 2019 Access 2016

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

本文内容

何时应考虑存档?

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

存档数据的方法

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

方法 说明 使用场景... 其他注意事项
定期替换表 定期创建特定表的存档副本,并使用新的空表副本替换该表。 表中的所有记录都满足用于确定是否存档的条件。

示例:您有一个存储每日极端温度的表。 每年,您都会存档表格并从一张空桌子重新开始。
  • 可能必须解决参照完整性问题。 有关更多信息,请参阅有关解决 参照完整性 的部分。
定期替换所有表 定期创建后端数据库的存档副本,然后将后端数据库替换为新的空数据库。 需要拆分数据库 (数据库,包括:包含所有表的后端数据库文件;以及包含) 所有其他数据库对象的前端数据库文件。 数据库中大多数表中的所有记录都满足用于确定是否存档的条件。

示例:您的数据库由多个包含不同类型气象数据的表组成。 每年,您都会存档所有表。
  • 如果你有任何用于存储值以进行查找的查找表 (表(例如邮政编码或部门) ),则可能需要将该数据导入新的后端数据库。
  • 必须手动存档数据库。 不能将宏用于此方法。
定期将记录移动到存档表中 定期运行一个查询,该查询选择要存档的记录,并将数据添加到存档表中,然后您再运行一个查询来从原始表中选择 (的相同记录) 并将其删除。 表中的某些记录满足用于确定是否存档的条件。

示例:如果“签入日期”至少为一年) ,您希望存档库事务 (检查 出。
  • 可能必须解决参照完整性问题,尤其是当您要存档的记录位于一对多关系的一侧时。 有关更多信息,请参阅有关解决 参照完整性 的部分。

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

解决参照完整性问题

如果要存档的记录与其他表中的记录相关,则可能必须解决该关系。 如果要存档的记录是“子”记录, (它们属于一对多关系) 的“多”端,则可能可以放心地存档它们,而无需担心。 如果要存档的记录是“父”记录, (它们属于一对多关系) 的“一”端,则在存档这些记录时,其相关的“子”记录可能:

  • 阻止删除“父”记录。 如果您已经将“父”记录追加到存档表,则可能会导致问题。
    • 或者 -
  • 成为“孤儿” - 属于不存在的“父级”的记录。 这可能会导致使用“孤立”记录的数据库中的数据完整性和功能出现问题。

为了说明参照完整性,请执行以下步骤:

  1. 确定哪些“子”记录属于要存档的记录。 例如,要存档在图书馆借出的资产的记录,首先要确定这些资产是否有任何未结的交易,即资产是否已借出但未归还。

  2. 执行下列操作之一:

    • 如果“子”记录始终可以安全删除,请确保关系通过级联删除强制执行引用完整性。 这可确保删除所有相关的“子”记录。
    • 如果“子”记录不能始终安全删除,请考虑存档数据库中的所有表。
    • 创建可选择没有“子”记录的“父”记录的查询。 然后,使用第一个查询创建存档查询 (参阅定期 将记录移动到存档表) 部分,而不是使用“父”表。

返回页首

定期替换表

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

重要

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

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

  2. 在“ 将表格粘贴为 ”对话框的 “粘贴选项”下,选择“ 仅结构”,然后单击“ 确定”

    Access 将该副本命名为 原始表名称的副本

  3. 在导航窗格中,右键单击原始表,然后单击快捷菜单上的 “重命名 ”。

    为表提供另一个名称以指示它包含的内容,例如“DailyTemperatureExtremes_archive_2019”。

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

返回页首

定期替换所有表

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

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

准备后端数据库的空副本

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

  1. “文件 ”选项卡上,单击“ 新建”,选择 “空白数据库”,然后单击“ 创建”。
  2. 关闭 Table1。
  3. “外部数据 ”选项卡上的 “导入 & 链接 ”组中,单击 “Access”。
  4. 在“ 获取外部数据 - Access 数据库 ”对话框中,选择“将 表、查询、窗体、报表、宏和模块导入当前数据库”,然后单击“ 浏览”。
  5. 在“ 文件打开 ”对话框中,选择后端数据库。 单击 “打开 ”关闭“ 文件打开 ”对话框,然后单击“ 确定”
  6. 在“ 导入对象”(Import Objects ) 对话框中,单击 “选项”(Options)。
  7. “导入表”下,选择“ 仅定义”。
  8. 在“ ”选项卡上,依次单击“ 全选”、“ 确定”和“ 关闭”。

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

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

  1. 链接到现有后端数据库中的查找表。
  2. 创建一个追加查询,将原始记录中的所有记录添加到副本中。

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

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

  1. 单击“ 文件 ”选项卡,然后单击“ 数据库另存为”。 系统可能会提示您关闭所有打开的对象;如果是,请单击 “确定”。 “ 另存为”(Save As ) 对话框随即打开。
  2. 在“另存为”对话框) 顶部的“保存位置”框 (中,确保将文件保存在与原始后端数据库相同的位置。
  3. “文件名 ”框中,输入原始后端数据库的名称。
  4. “保存类型 ”框中,选择“ Access 数据库 (*.accdb) ”。

返回页首

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

此过程分为四个步骤,需要创建包含要存档的记录的表的空副本,创建追加查询以将记录从原始表复制到存档表,创建删除查询以从原始表中删除存档的记录,最后创建宏以在要存档时同时运行这两个查询。 如果您按照下面列出的顺序执行步骤,这个看似复杂的过程会很容易:

步骤 1:创建存档表

第 2 步:创建追加查询以将数据复制到存档表

第 3 步:创建删除查询以从原始表中删除数据

第 4 步:创建用于同时运行追加查询和删除查询的宏

步骤 1:创建存档表

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

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

若要在每次存档时使用新的存档表,但又要保留旧存档表,请先重命名旧存档表,然后再创建新存档表。 如果要基于某个日期进行存档,请考虑根据旧存档表所代表的日期范围来命名它们。

  1. 在导航窗格中,选择包含要存档的记录的表,按 CTRL+C,然后按 CTRL+V。
  2. “表名称 ”框中,删除单词 “复制” 并将下划线和单词“存档”追加到现有表名称中,然后单击 “确定”。 例如,如果原始表名为 Transactions ,则存档表将命名为 Transactions_archive
    粘贴表方式
  3. 在“将表格粘贴为”(Paste Table As) 对话框的“粘贴选项”(Paste Options) 下,选择“仅结构”(Structure Only)。

第 2 步:创建追加查询以将数据复制到存档表

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

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

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

    注意

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

  4. 在查询设计窗口中,双击要用于指定记录在存档之前应满足的条件的字段。 例如,如果您的“交易”表具有一个名为“ 签入日期”的字段,并且您想要存档该日期超过一年的所有记录,则双击该字段,该字段将显示在查询设计网格的下一个空列中。
    查询设计网格
    如果要将条件用于其他字段,请重复此步骤。

  5. 使用 “条件” 行为您刚刚添加的字段指定条件。 例如,您可以在“条件”行中使用表达式 <#1/1/2019#,指定签入日期必须早于 2019 年 1 月 1 日。
    如果每次存档时条件值都更改,则应让查询要求输入。 为此,请在 “条件” 行中使用参数,以便查询要求输入。 若要使用参数,请像平时一样使用表达式,但不要使用指定值,而应使用用方括号括起来的简短问题。 例如,可以使用表达式 <[存档事务完成时间:],如下所示:
    参数表达式
    有关使用参数的详细信息,请参阅 查询简介一文。
    可能还需要使用 OR 行指定替代条件。 有关使用条件的详细信息,请参阅查询条件示例一文。

    提示

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

  6. 执行下列操作之一:
    如果已创建存档表,则使用追加查询将指定的记录添加到该表中:

    1. “设计”选项卡上的“查询类型”组中,单击“追加”
    2. 在“ 追加 ”对话框中的 “表名称 ”框中,选择存档表的名称,然后单击“ 确定”
      追加到
      在查询设计网格中,将显示“ 追加到 ”行。
    3. 清除用于指定条件的任何字段的“ 追加到 ”行。 (只有星号应具有“ 追加到”的值。)
      查询设计网格中的“追加到”行
      如果尚未创建存档表,请使用生成表查询通过指定的记录创建存档表:
    4. 在“设计”选项卡上的“查询类型”组中,单击“生成表”。
    5. 在“ 创建表 ”对话框的 “表名称 ”框中,键入存档表的名称,然后单击“ 确定”
  7. 按 Ctrl+S 保存该查询。

第 3 步:创建删除查询以从原始表中删除数据

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

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

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

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

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

    重要

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

  6. “设计 ”选项卡的 “查询类型 ”组中,单击 “删除”。
    删除 ”行显示在查询设计网格中。
    查询设计网格中的“删除”行

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

第 4 步:创建用于同时运行追加查询和删除查询的宏

  1. 在“创建”选项卡上的“宏和代码”组中,单击“”。
  2. 单击“ 添加新操作”旁边的下拉箭头,然后单击“ OpenQuery”。
    OpenQuery 操作随即显示并显示其参数。
  3. 在“ 查询名称 ”框中,选择在 步骤 2 中创建的 (追加或生成表) 查询。
  4. 单击“ 添加新操作”旁边的下拉箭头,然后单击“ OpenQuery”。
    OpenQuery 操作随即显示并显示其参数。
  5. “查询名称 ”框中,选择在 步骤 3 中创建的删除查询。
  6. 按 CTRL+S 保存宏。
    如果想要存档记录,请运行宏。

返回页首