存档 Access 数据

重要:  本文是由机器翻译的,请参阅免责声明。请在 此处 中查找本文的英文版本以便参考。

您可以通过定期存档旧的或非活动的记录来帮助组织数据。例如,假设您使用 Access 来管理一个出借库。您可能会使用一个用于跟踪出借交易的表,其中一个字段包含借出物品的日期,一个字段包含返还物品的日期。您也许会采用以下记录保留策略:在物品返还一年之后将相关出借交易记录存档,并在两年后销毁这些记录。

您可以存档数据库中的所有表、某些特定的表或仅存档某些特定的记录(例如,早于某个特定日期的记录)。本主题讲述如何存档数据。

本文内容

概述

定期将记录移到存档表中

定期替换某个表

定期替换所有表

概述

如果您有一些数据不打算再使用但又希望在万一确实需要这些数据时可以方便地找到,则应考虑对数据进行存档。您可能会有一个用于指导存档计划的策略,如数据保留策略。

存档通常用于根据某个日期条件来存储数据,例如在月末进行存档。

存档数据的方法

下表列出了存档数据的方法、每种方法的应用场合以及其他注意事项。

方法

说明

应用场合...

其他注意事项

定期将记录移到存档表中

定期运行查询以选择要存档的数据并将这些数据追加到存档表中,然后运行查询以从原始表中选择相同的数据并将其删除。

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

示例:您希望将签入日期至少超过一年的出借库交易(借出记录)存档。

  • 可能必须保持引用完整性,尤其是在要存档的记录位于一对多关系的“一”端时。

  • 如果需要在查询中使用参数,则应创建一个窗体以处理这些参数。否则,会有丢失数据的风险。

定期替换某个表

定期生成某个特定表的存档副本,然后用新的空副本替换该表。

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

示例:您使用一个表来存储每日的最高和最低温度。您每年都会将该表进行存档,然后用一个空表重新开始存储每日的最高和最低温。

  • 可能必须保持参照完整性。

定期替换所有表

您在开始时使用一个拆分的数据库(此数据库由一个包含所有表的后端数据库文件和一个包含所有其他数据库对象的前端数据库文件构成)。您定期生成后端数据库的存档副本,然后用新的空数据库替换后端数据库。

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

示例:您的数据库由包含不同类型的气象数据的若干表组成。您每年都会将所有表进行存档。

  • 如果您具有任何查阅表(用于存储像邮政编码或部门之类的供查阅的值的表),则您可能需要将这些表中的数据导入到新的后端数据库中。

  • 在此方法中无法使用宏。必须手动存档数据库。

保持参照完整性

如果要存档的记录与其他表中的记录相关,则您可能必须考虑解决关系问题。如果要存档的记录为“子”记录(这些记录属于一对多关系的“多”端),则您也许可以安全地将这些记录存档,而不需要有任何担心。如果要存档的记录为“父”记录(这些记录属于一对多关系的“一”端),则在将这些记录进行存档时,其相关的“子”记录可能会发生以下情况:

  • 禁止您删除“父”记录。如果您已将“父”记录追加到存档表中,则这种情况可能会导致出现问题。

    - 或 -

  • 成为“孤立”记录(即,属于并不存在的“父”记录的记录)。这可能会导致数据完整性以及数据库中使用“孤立”记录的各种功能出现问题。

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

  1. 确定哪些“子”记录属于要存档的记录。例如,如果要存档我从库中借出的资产的记录,则首先要确定是否有关于这些资产的未结清交易,也就是说,这些资产是否已借出但未返还。

  2. 请执行下列操作之一:

    • 如果始终可以安全地删除“子”记录,请通过级联删除来确保关系强制保持参照完整性。这将确保删除所有相关的“子”记录。

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

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

      提示: 可以使用“查询向导”来查找不匹配的记录。有关详细信息,请参阅文章比较两个表并查找不含匹配项的记录

返回页首

定期将记录移到存档表中

首先,生成包含要存档的记录的表的空副本。这个新的空表就是存档表。接下来,创建一个追加查询以将原始表中的记录复制到存档表中。然后,创建一个删除查询以从原始表中删除已存档的记录。最后,创建一个可运行这两个查询的宏。当要存档记录时,只需运行该宏即可。

提示: 可以将该宏附加到一个窗体上的某个按钮,从而可以通过单击此按钮来可运行该宏。

步骤 1:创建存档表

步骤 2:创建用于将数据复制到存档表中的查询

步骤 3:创建用于从原始表中删除相同数据的删除查询

步骤 4:创建用于运行这两个查询的宏

步骤 1:创建存档表

如果要将所有存档的记录保存在一个表中,则只用执行一次此步骤。在此步骤中创建的存档表将保存所有存档的记录。

如果要在创建新的存档表时销毁旧的存档表,则无需执行此步骤。可以使用生成表查询而不是追加查询来将数据复制到存档表中。为此,请跳至步骤 2

如果每次进行存档时都要使用新的存档表并且要保留旧的存档表,请在创建新的存档表之前重命名旧的存档表。如果是基于某个日期进行存档,可以考虑根据旧存档表所代表的日期范围来命名这些表。

注意: 如果每次都创建新的存档表并保留旧的存档表,则在运行查询之前必须重命名旧存档表。

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

  2. “粘贴表方式”对话框中的“粘贴选项”下,选择“只粘贴结构”

  3. 表名称框中,删除复制的字词和将下划线和 word"存档"追加到现有的表名称,然后单击确定。例如,如果原始表名为交易存档表名为Transactions_archive

    粘贴表方式

步骤 2:创建用于将数据复制到存档表中的查询

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

  2. 使用“显示表”对话框以添加包含要存档的记录的表。关闭“显示表”对话框。

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

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

  4. 在查询设计窗口中,双击要用于指定您在存档记录前记录应满足的条件的字段。例如,如果“交易”表中包含一个名为“签入日期”的字段,并且您要将其签入日期距今已超过一年的所有记录进行存档,则应双击“签入日期”。该字段将显示在查询设计网格的下一个空列中。

    查询设计网格

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

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

    如果在每次进行存档时条件值都会发生更改,则应让查询要求输入条件值。为此,请在“条件”行中使用参数,以便查询要求输入条件值。若要使用参数,可按通常那样使用表达式,但要使用由方括号括起来的简短问题,而不是使用指定的值。例如,您可能会像下面这样使用表达式 <[存档以下日期前完成的交易:]

    参数表达式

    有关使用参数的详细信息,请参阅文章建立要求用户输入的查询

    您可能还希望使用“或”行来指定替代条件。有关使用条件的详细信息,请参阅文章查询条件示例

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

  6. 请执行下列操作之一:

    • 如果您已创建存档表,则需要一个追加查询以将指定的记录添加到该表中。

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

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

        追加到

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

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

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

    • 如果尚未创建存档表,则需要一个生成表查询以使用指定的记录创建存档表。

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

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

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

步骤 3:创建用于从原始表中删除相同数据的删除查询

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

  2. 使用“显示表”对话框以添加包含要存档的记录的表。关闭“显示表”对话框。

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

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

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

    重要: 如果追加查询或生成表查询使用了参数,那么删除查询也应使用参数。而且,您应确保为这两个查询输入相同的值。如果输入不同的参数值,则可能会丢失数据。为了防止数据丢失,请考虑使用一个窗体来收集值,并让查询从该窗体获取输入值。有关详细信息,请参阅文章使查询要求输入值

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

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

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

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

步骤 4:创建用于运行这两个查询的宏

  1. 在“创建”选项卡上的“其他”组中,单击“”。如果此命令不可用,请单击“模块”或“类模块”按钮下方的箭头,然后单击“”。

  2. 在宏设计网格的第一行的“操作”列中,选择“OpenQuery”

    “打开查询”宏操作

  3. 在网格底部的“操作参数”下的“查询名称”框中,从下拉列表中选择您在步骤 2 中创建的追加查询或生成表查询。

    “打开查询”宏操作中的查询参数

  4. 在宏设计网格的第二行的“操作”列中,选择“OpenQuery”

  5. 在网格底部的“操作参数”下的“查询名称”框中,从下拉列表中选择删除查询。

    您的宏应如下所示:

    准备保存的宏

  6. 按 Ctrl+S 以保存宏。

    当要存档记录时,运行该宏。

返回页首

定期替换某个表

如果始终要存档某个表中的所有数据,则不必使用查询或宏。作为替代方法,您可以定期用空副本替换该表。

重要: 如果存档的表与其他表相关,则您可能需要保持参照完整性

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

  2. “粘贴表方式”对话框的“粘贴选项”下,选择“只粘贴结构”,然后单击“确定”

    访问名称副本复制的原始表名

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

    为该表指定一个可表明其所包含内容的名称,如“DailyTemperatureExtremes_archive_2007”。

  4. 在导航窗格中,右键单击空副本,然后在显示的快捷菜单上单击“重命名”

    为该空副本指定原始表名称。

返回页首

定期替换所有表

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

首先,准备好空副本。除非数据库设计发生改变,否则您可以在每次存档时重用此副本。然后,当要进行存档时,重命名现有的后端数据库以表明它是一个存档数据库,并将空副本保存为新的后端数据库。

准备后端数据库的空副本

导入针对后端数据库中的所有表的表定义。

  1. 新建一个空白数据库。删除表1。

  2. 外部数据选项卡上的导入组中,单击Access

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

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

  5. “导入对象”对话框中,单击“选项”

  6. “导入表”下,选择“只导入定义”

  7. “表格”选项卡上,依次单击“全选”“确定”“关闭”

接下来,向空副本中的任何查阅表中添加数据。对于每个查阅表,请执行以下步骤:

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

  2. 创建一个用于将原始表中的所有记录添加到副本中的追加查询。

用空副本替换后端数据库

首先,重命名现有的后端数据库以表明它现在是一个存档数据库。

然后,打开空副本,并使用原始后端数据库的名称保存该副本。

  1. Microsoft Office 按钮 Office 按钮图像 中,单击,然后指向另存为。打开另存为菜单。

  2. “将数据库另存为其他格式”下,单击“Access 2007 数据库”

返回页首

注意: 机器翻译免责声明:本文是由无人工介入的计算机系统翻译的。Microsoft 提供机器翻译是为了帮助非英语国家/地区用户方便阅读有关 Microsoft 产品、服务和技术的内容。由于机器翻译的原因,本文可能包含词汇、语法或文法方面的错误。

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

此信息是否有帮助?

谢谢您的反馈!

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

×