存档 Access 数据

可以通过定期存档旧记录或不活动记录来组织和管理 Microsoft Access 数据库。 可以将数据库中的所有表、特定表或仅特定记录(例如,超过特定日期的记录)存档。 本主题介绍如何使用三个不同的选项来存档 Access 数据库中的数据。

本文内容

何时应考虑存档?

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

存档数据的方法

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

方法

说明

使用场景...

其他注意事项

定期替换表

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

表中的所有记录都满足用于确定是否要存档的条件。

示例:有一个存储每日温度极端的表。 每年,你存档表,然后从空表开始。

  • 可能需要围绕引用完整性进行工作。 有关详细信息,请参阅 "处理参照完整性 "部分。

定期替换所有表

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

数据库中大多数表中的所有记录都满足用于确定是否存档的条件。

示例:数据库由具有不同类型的气象数据的多个表组成。 每年,将存档所有表。

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

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

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

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

表中的某些记录满足用于确定是否要存档的条件。

示例:如果要将库事务存档 (签出) 如果签入日期至少为一年。

  • 可能需要处理 引用完整性 ,尤其是当要存档的记录位于数据库的一 一对多关系 。 有关详细信息,请参阅 "处理参照完整性 "部分。

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

处理参照完整性

如果要存档的记录与其他表中的记录相关,您可能需要处理关系。 如果要存档的记录是"子"记录 (它们属于 一对多关系 ) 的"多"端,则无需担心,您可以安全地将其存档。 如果要存档的记录是"父"记录 (它们属于 一对多关系 ) 的"一"端,则存档这些记录时,其相关的"子"记录可能:

  • 防止删除"父"记录。 如果已在存档表中追加"父"记录,这可能会导致问题。

    - 或 -

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

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

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

  2. 执行下列操作之一:

    • 如果始终可以安全地删除"子"记录,请确保关系强制实施参照完整性,同时进行级联删除。 这可确保删除所有相关的"子"记录。

    • 如果始终无法安全地删除"子"记录,请考虑存档数据库中的所有表。

    • 创建一个查询,用于选择没有"子"记录的"父"记录。 然后,使用第一个查询创建存档查询, ("定期将记录移动到存档表 ") ,而不是使用"父"表。

返回页首

定期替换表

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

重要: 如果存档的表与其他表相关,可能需要 处理引用完整性

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

  2. 在"粘贴表格方式"对话框中的"粘贴选项"下,选择"仅结构",然后单击"确定"。

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

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

    为表指定另一个名称以指示它包含哪些内容,例如"DailyTemperatureExtremes_archive_2019"。

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

返回页首

定期替换所有表

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

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

准备后端数据库的空副本

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

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

  2. 关闭 Table1。

  3. 在"外部数据"选项卡上的"导入链接&,单击"Access"。

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

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

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

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

  8. 在"表"选项卡上,单击"全选",单击"确定",然后单击"关闭"。

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

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

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

  2. 创建追加查询,将原始记录的所有记录添加到副本。

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

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

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

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

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

  4. 在"另存为类型"框中,选择Access Database (*.accdb) 。

返回页首

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

这是一个四步过程,需要创建包含要存档的记录的表的空副本,创建追加查询以将记录从原始表复制到存档表,创建 删除查询 以从原始表中删除已存档的记录,最后创建一个宏来运行两个查询,当你想要存档时可以运行这些查询。 如果按照下面介绍的顺序执行这些步骤,则这一看似复杂的过程可能很容易:

步骤 1:创建存档表

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

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

步骤 4:创建宏以同时运行追加和删除查询

步骤 1:创建存档表

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

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

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

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

  2. 在"表名称"框中,删除单词"复制",将下划线和单词"archive"追加到现有表名,然后单击"确定"。 例如,如果原始表名为"事务",则存档表Transactions_archive。

    粘贴表方式

  3. 在"粘贴表格方式"对话框中的"粘贴选项"下,选择"仅结构"。

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

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

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

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

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

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

    查询设计网格

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

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

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

    参数表达式

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

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

    提示: 如果使用日期字段指定条件,并且希望存档当前日期之前的所有记录,请在日期字段的"条件"行中输入<Date () 。

  6. 执行下列操作之一:

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

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

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

      追加到

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

    3. 清除 用于 指定条件的任何字段的"追加到"行。 (仅星号应具有"追加到.)

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

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

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

    5. 在"创建表"对话框中的"表名称"框中,键入存档表的名称,然后单击"确定"。

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

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

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

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

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

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

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

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

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

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

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

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

步骤 4:创建宏以同时运行追加和删除查询

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

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

    将显示 OpenQuery 操作并显示其参数。

  3. 在" 查询名称" 框中, (步骤 2中创建的) 追加或创建表。

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

    将显示 OpenQuery 操作并显示其参数。

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

  6. 按 Ctrl+S 保存宏。

    若要存档记录,请运行宏。

返回页首

需要更多帮助?

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

此信息是否有帮助?

谢谢您的反馈!

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

×