Applies ToAccess for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

您可以定期封存舊記錄或非作用中記錄,讓您的 Microsoft Access 資料庫井然有序且可管理。 您可以封存資料庫中的所有數據表、特定數據表,或僅封存特定記錄,例如早於特定日期的記錄。 本主題說明如何使用三種不同的選項來封存 Access 資料庫中的數據。

本文內容

何時應考慮封存?

當您電腦上的資料庫包含您不打算再使用的資料,但您想要在某個時間點需要時隨時使用該數據,或是符合數據保留原則時,封存是保留這類數據的好方法。 封存也常用來根據日期條件保留數據,例如月底。

封存數據的方法

下表列出封存數據的方法、方法描述、何時應使用每個方法的說明,以及該方法的其他特定考慮。

方法

描述

使用時機...

其他考量

定期取代表格

定期製作特定數據表的封存復本,並以新的空白數據表複本取代該數據表。

數據表中的所有記錄都符合您用來判斷是否要封存的條件。範例:You have a table that store daily temperature extremes. 您每年都會封存數據表,並從空白數據表開始。

定期取代所有數據表

定期建立後端資料庫的封存復本,然後以新的空白資料庫取代後端資料庫。 需要分割資料庫 (數據庫存檔:包含所有數據表的後端資料庫檔案;以及包含所有其他資料庫物件的前端資料庫檔案) 。

資料庫中大部分數據表中的所有記錄都符合您用來判斷是否要封存的條件。範例:您的資料庫是由數個具有不同類型合併數據的數據表所組成。 您每年都會封存所有資料表。

  • 如果您有任何查閱數據表 (用來儲存查詢值的數據表,例如郵遞編碼或部門) ,您可能需要將該數據匯入到新的後端資料庫。

  • 您必須手動封存資料庫。 您無法為此方法使用宏。

定期將記錄移至封存數據表

定期執行會選取記錄以進行封存的查詢,並將數據新增至封存數據表,然後執行查詢以從原始數據表中選取相同的記錄 () 並刪除它們。

數據表中的某些記錄符合您用來判斷是否要封存的條件。範例:如果您的存回日期至少為一年,您想要封存文檔庫交易 (取出) 。

  • 您可能需要處理 參考完整性,特別是如果您要封存的記錄位於 一對多關聯性的一端。 如需詳細資訊,請參閱 處理引用完整性 一節。

警告: 如果您需要在查詢中使用參數,您應該建立窗體來處理參數。 否則,您可能會遺失數據。

處理引用完整性

如果您要封存的記錄與其他數據表中的記錄相關,您可能需要處理關聯。 如果您要封存的記錄是「子女」記錄, (它們屬於 一對多關聯性) 的「多」端,您或許可以放心地封存這些記錄。 如果您要封存的記錄是「父項」記錄, (它們屬於 一對多關聯性) 的「一」端,當您將相關的「子女」記錄封存時,可能會:

  • 防止您刪除「父項」記錄。 如果您已經將「父項」記錄附加到封存數據表,這可能會造成問題。

    - 或 -

  • 變成「孤立專案」,即屬於「父系」且不存在的記錄。 這可能會導致資料庫中使用「孤立」記錄的數據完整性和功能發生問題。

若要考慮引用完整性,請採取下列步驟:

  1. 決定哪些「子」記錄屬於您要封存的記錄。 例如,若要封存文檔庫中資產的記錄,請先判斷這些資產是否已開啟任何交易,也就是資產是否已取出但未傳回。

  2. 執行下列其中一個動作:

    • 如果一律可以安全地刪除「子」記錄,請確認關聯會強制執行引用完整性,並串聯刪除。 這可確保刪除所有相關的「子女」記錄。

    • 如果無法隨時安全地刪除「子」記錄,請考慮封存資料庫中的所有數據表。

    • Create 選取沒有「子女」記錄的「父項」記錄的查詢。 然後,使用第一個查詢建立封存查詢 (請參閱 定期將記錄移至 封存數據表) 一節,而非使用「父項」數據表。

頁面頂端

定期取代表格

如果您想要封存資料表中的所有數據,您可以定期以空白複本取代數據表。

重要: 如果您封存的數據表與其他數據表相關,您可能需要 因應引用完整性

  1. 在 [導航窗格] 中,選取您要封存的數據表,按 CTRL+C,然後按 CTRL+V。

  2. 在 [ 貼上數據表為 ] 對話方塊的 [ 貼上選項] 底下,選取 [ 僅限結構],然後按兩下 [ 確定]Access 會將復本命名為 原始數據表名稱的複本

  3. 在 [導航窗格] 中,以滑鼠右鍵單擊原始數據表,然後按下快捷方式功能表上的 [ 重新命名 ]。為數據表命名另一個名稱來表示其包含的內容,例如「DailyTemperatureExtremes_archive_2019」。

  4. 在 [導航窗格] 中,以滑鼠右鍵單擊空白複本,然後按下快捷方式功能表上的 [ 重新命名 ]。 使用原始數據表的名稱重新命名。

頁面頂端

定期取代所有數據表

如果您使用分割資料庫,您可以以空白複本取代後端資料庫,以定期取代所有數據表。

若要這麼做,請先準備空白複本。 除非資料庫的設計有所變更,否則您可以在每次封存時重複使用此空白複本。 若要封存,只要重新命名現有的後端資料庫,表示它是封存,然後將空白復本儲存為新的後端資料庫。

準備後端資料庫的空白複本

首先,匯入後端資料庫中所有數據表的數據表定義。

  1. 在 [檔案] 索引標籤上,按兩下 [新增],選取 [空白資料庫],然後按兩下 [Create]

  2. 關閉 Table1。

  3. 在 [ 外部數據] 索 引標籤的 [ 匯入 & 連結] 群組中,按兩下 [Access]

  4. 在 [ 取得外部數據 – Access 資料庫 ] 對話框中,選取 [將 數據表、查詢、窗體、報表、宏和模組匯入到目前的資料庫],然後按兩下 [ 瀏覽]

  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_archive

    貼上資料表成為

  3. 在 [ 貼上數據表為 ] 對話框的 [ 貼上選項] 底下,選取 [ 僅結構]

步驟 2:Create 追加查詢將數據複製到封存數據表

  1. 在 [建立] 索引標籤的 [查詢] 群組中,按一下 [查詢設計]。

  2. 新增含有您要封存之記錄的數據表。

  3. 在查詢設計視窗中,按兩下您剛新增之資料表中的星號 (*) 。 數據表名稱和星號會出現在查詢設計網格線的第一欄中。

    附註: 星號表示查詢應在查詢輸出中包含數據表的所有欄位。 當您使用星號時,如果從數據表新增或移除欄位,查詢輸出會隨之調整。

  4. 在查詢設計視窗中,按兩下您要用來指定記錄在封存前應符合的條件的欄位。 例如,如果您的交易數據表有一個名為 [ 存回日期] 的欄位,而您想要封存該日期超過一年的所有記錄,請按兩下該字段,該字段會出現在查詢設計網格線的下一個空白欄中。

    查詢設計格線

    如果您想要將準則用於其他字段,請重複此步驟。

  5. 使用 [ 準則] 列為您剛才新增的欄位指定準則。 例如,您可以使用 [準則] 列中的運算式 <#1/1/2019# 來指定 [存回日期] 必須早於 2019 年 1 月 1 日。

    如果您的準則值在每次封存時都會變更,您應該讓查詢要求輸入。 若要這麼做,請使用 [ 準則 ] 數據列中的參數,讓查詢要求輸入。 若要使用參數,請像平常一樣使用表達式,但不要使用指定的值,而是使用以方括弧括住的簡短問題。 例如,您可以使用表示 式<[封存之前完成的交易],如下所示:

    參數運算式

    如需使用參數的詳細資訊,請參閱 查詢簡介一文。

    您可能也想要使用 列來指定替代條件。 如需使用準則的詳細資訊,請參閱查詢準則範例一文。

    提示: 如果您使用日期欄位來指定準則,而您想要封存所有早於目前日期的記錄,請在日期欄位的 [準則] 列中輸入 <日期 ()

  6. 執行下列其中一個動作:

    如果您已經建立封存資料表,請使用追加查詢將指定的記錄新增至該資料表:

    1. 在 [設計] 索引標籤的 [查詢類型] 群組中,按一下 [新增]。

    2. 在 [ 附加 ] 對話方塊的 [ 資料表名稱 ] 方塊中,選取封存資料表的名稱,然後按兩下 [ 確定]

      附加至

      在查詢設計網格線中, 隨即會出現 [附加至] 列

    3. 針對您用來指定準則的任何字段,清除 [ 附加至 ] 列。 (只有星號才應有 [附加至].) 的值

      查詢設計格線 [附加至] 列

      如果您尚未建立封存資料表,請使用指定的記錄,使用製作資料表查詢來建立封存資料表:

    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 以儲存宏。

    當您想要封存記錄時,請執行宏。

頁面頂端

Need more help?

Want more options?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。