Access のデータをアーカイブする

注: 最新のヘルプ コンテンツをできるだけ早く、お客様がお使いの言語で提供したいと考えております。このページは、自動翻訳によって翻訳されているため、文章校正のエラーや不正確な情報が含まれている可能性があります。私たちの目的は、このコンテンツがお客様の役に立つようにすることです。お客様にとって役立つ情報であったかどうかを、このページの下部でお知らせください。簡単に参照できるように、こちらに英語の記事があります。

データを整理しておくことによって、古いレコードまたは非アクティブな記録を定期的にアーカイブすることができます。たとえば、貸出ライブラリを管理するために Access を使用しているとします。アイテムが借用された日付と返された日付を含むフィールドを含む、貸出トランザクションを追跡するテーブルがある場合があります。おそらく、レコード保持ポリシーは、アイテムの返品後1年後に、2年後にレコードを破棄するために、貸出トランザクションレコードをアーカイブすることです。

データベース内のすべてのテーブル、特定のテーブル、または特定のレコードのみをアーカイブすることができます (たとえば、特定の日付よりも古いレコード)。このトピックでは、データをアーカイブする方法について説明します。

この記事の内容

概要

定期的にレコードをアーカイブテーブルに移動する

定期的に表を置き換える

定期的にすべてのテーブルを置き換える

概要

もう使う予定のないデータがある場合は、データをアーカイブすることを検討し、必要に応じてデータを手元に残しておくことをお勧めします。データ保持ポリシーなどのアーカイブ計画をガイドするポリシーがある場合があります。

アーカイブは、1か月の終わりなど、日付の条件に基づいてデータを保存するためによく使用されます。

データをアーカイブする方法

次の表は、各メソッドを使用する必要がある場合に、データをアーカイブする方法とその他の考慮事項を示しています。

方法

説明

使用します。

他の考慮事項

定期的にレコードをアーカイブテーブルに移動する

定期的に、アーカイブするデータを選択し、そのデータをアーカイブテーブルに追加するクエリを実行します。次に、元のテーブルから同じデータを選択して削除するクエリを実行します。

テーブルの一部のレコードは、アーカイブするかどうかを決定するために使用する条件を満たしています。
例: チェックインされた日付が少なくとも1年前の場合は、ライブラリトランザクションをアーカイブする (チェックアウトを行う) 必要があり
ます。

  • 参照整合性を回避する必要がある場合があります。特に、アーカイブするレコードが一対多リレーションシップの片側にある場合。

  • クエリでパラメーターを使う必要がある場合は、パラメーターを処理するためのフォームを作成する必要があります。それ以外の場合は、データ損失を危険にさらすことになります。

定期的に表を置き換える

定期的に、特定のテーブルのアーカイブコピーを作成し、テーブルを新しい空のコピーに置き換えます。

テーブル内のすべてのレコードは、アーカイブするかどうかを決定するために使用する条件を満たしています。
例: 日常的な温度極端を格納するテーブルがあり
ます。毎年、テーブルをアーカイブして、空の1つで新鮮な作業を開始します。

  • 参照整合性を回避する必要がある場合があります。

定期的にすべてのテーブルを置き換える

まず、分割データベース (すべてのテーブルが含まれているバックエンドデータベースファイルと、他のすべてのデータベースオブジェクトを含むフロントエンドデータベースファイル) を含むデータベースを選びます。定期的に、バックエンドデータベースのアーカイブコピーを作成した後、バックエンドデータベースを新しい空のデータと置き換えます。

データベース内のほとんどのテーブルのすべてのレコードは、アーカイブするかどうかを決定するために使用する条件を満たしています。
例: データベースは、さまざまな種類の気象データを含む複数のテーブルで構成されてい
ます。毎年、すべてのテーブルをアーカイブします。

  • ルックアップテーブル (検索する値を格納するために使用するテーブル (郵便番号や部門など) がある場合は、新しいバックエンドデータベースにデータをインポートする必要がある場合があります。

  • このメソッドにマクロを使用することはできません。データベースは手動でアーカイブする必要があります。

参照整合性を回避する

アーカイブするレコードが他のテーブルのレコードに関連付けられている場合は、リレーションシップを回避する必要がある場合があります。アーカイブするレコードが "子" レコード ( 一対多リレーションシップの "多" 側に属している) である場合は、問題なく安全にアーカイブすることができます。アーカイブするレコードが "親" レコード ( 一対多リレーションシップの "一" 側に属している) の場合は、関連する "子" レコードをアーカイブすると、次のようになります。

  • "親" レコードを削除できないようにします。これにより、"親" レコードがアーカイブテーブルに既に追加されている場合に、問題が発生する可能性があります。

    - または -

  • "孤児" になる—存在しない "親" に属するレコード。これにより、データの整合性や、"孤立" レコードを使用するデータベース内のさまざまな機能に問題が発生する可能性があります。

参照整合性を考慮するには、次の手順を実行します。

  1. アーカイブするレコードに属する "子" レコードを特定します。たとえば、自分のライブラリで貸した資産のレコードをアーカイブする場合は、最初に、それらの資産に対して開いているトランザクションがあるかどうかを判断します。つまり、資産がチェックアウトされていても返されていないかどうかを確認します。

  2. 次のいずれかの操作を行います。

    • "子" レコードを常に安全に削除できる場合は、連鎖削除を使用して、リレーションシップによって参照整合性が適用されていることを確認します。これにより、関連するすべての "子" レコードが削除されます。

    • "子" レコードを常に安全に削除できない場合は、データベース内のすべてのテーブルをアーカイブすることを検討してください。

    • "子" レコードを持たない "親" レコードを選択するクエリを作成します。次に、最初のクエリを使用してアーカイブクエリを作成します (「親」テーブルを使用するのではなく、「レコードをアーカイブテーブルに定期的に移動する」を参照してください)。

      ヒント: クエリウィザードを使用して、不一致のレコードを見つけることができます。詳細については、「 2 つのテーブルを比較し、一致しないレコードを検索する」を参照してください。

ページの先頭へ

定期的にレコードをアーカイブテーブルに移動する

まず、アーカイブするレコードが含まれているテーブルの空のコピーを作成します。この新しい空のテーブルは、アーカイブテーブルです。次に、 追加クエリを作成して、元のテーブルのレコードをアーカイブテーブルにコピーします。次に、 削除クエリを作成して、元のテーブルからアーカイブされたレコードを削除します。最後に、両方のクエリを実行するマクロを作成します。レコードをアーカイブする場合は、マクロを実行します。

ヒント: フォームのボタンにマクロを添付すると、ボタンをクリックしたときにマクロが実行されるようにすることができます。

手順 1: アーカイブテーブルを作成する

手順 2: アーカイブテーブルにデータをコピーするクエリを作成する

手順 3: 元のテーブルから同じデータを削除する delete クエリを作成する

手順 4: 両方のクエリを実行するマクロを作成する

手順 1: アーカイブテーブルを作成する

アーカイブされたすべてのレコードを1つのテーブルに保持する場合は、この手順を1回だけ行う必要があります。この手順で作成したアーカイブテーブルには、すべてのアーカイブレコードが格納されます。

新しいレコードを作成するときに古いアーカイブテーブルを破棄する場合は、この手順を実行する必要はありません。追加クエリの代わりにテーブル作成クエリを使用して、データをアーカイブテーブルにコピーすることができます。これを行うには、手順 2に進んでください。

アーカイブするたびに新しいアーカイブテーブルを使用して、古いアーカイブテーブルを保持したい場合は、古いアーカイブテーブルの名前を変更してから新しいものを作成します。日付に基づいてアーカイブする場合は、日付の範囲に従って古いアーカイブテーブルに名前を付けることを検討してください。

注: 新しいアーカイブテーブルを毎回作成し、古いレコードを保持する場合は、クエリを実行する前に古いアーカイブの名前を変更する必要があります。

  1. ナビゲーションウィンドウで、アーカイブするレコードが含まれているテーブルを選択し、ctrl キーを押しながら C、ctrl + V キーを押します。

  2. [テーブルとして貼り付け] ダイアログボックスの [貼り付けのオプション] で、[構造のみ] を選択します。

  3. [テーブル名] ボックスで、単語のコピーを削除し、アンダースコアと "archive" を追加して既存のテーブル名にし、[ OK] をクリックします。たとえば、元のテーブルに名前付きトランザクションがある場合、アーカイブテーブルにはTransactions_archiveという名前が付けられます。

    テーブルの貼り付け

手順 2: アーカイブテーブルにデータをコピーするクエリを作成する

  1. [<ui>作成</ui>] タブの [<ui>その他</ui>] グループで [<ui>クエリ デザイン</ui>] をクリックします。

  2. [テーブルの表示] ダイアログボックスを使用して、アーカイブするレコードが含まれているテーブルを追加します。[テーブルの表示] ダイアログボックスを閉じます。

  3. [クエリデザイン] ウィンドウで、追加したテーブルのアスタリスク (*) をダブルクリックします。テーブル名とアスタリスクは、クエリデザイングリッドの最初の列に表示されます。

    注: アスタリスクは、クエリでクエリ出力のテーブルのすべてのフィールドを含める必要があることを示します。アスタリスクを使用すると、テーブルにフィールドが追加または削除された場合、クエリ出力はそれに応じて調整します。

  4. [クエリデザイン] ウィンドウで、レコードをアーカイブする前に満たす必要がある条件を指定するために使用するフィールドをダブルクリックします。たとえば、トランザクションテーブルに [チェックイン日] というフィールドが含まれていて、その日付が1年以上前のすべてのレコードをアーカイブする場合は、[日付] をダブルクリックします。フィールドは、クエリデザイングリッドの次の空の列に表示されます。

    クエリのデザイン グリッド

    追加のフィールドで抽出条件を使用する場合は、この手順を繰り返します。

  5. [抽出条件] 行を使用して、追加したフィールドの抽出条件を指定します。たとえば、[抽出条件] 行の式< #1/1/2008 #を使用して、チェックインした日付を2008の1月1日より前にする必要があることを指定することができます。

    アーカイブするたびに抽出条件の値が変更される場合は、クエリで入力を求めるようにします。これを行うには、[抽出条件] 行のパラメーターを使用して、クエリが入力を要求するようにします。パラメーターを使うには、通常どおりに式を使用しますが、指定された値の代わりに、角かっこで囲まれた簡単な質問を使用します。たとえば、次のように、expression < [前に完了したアーカイブトランザクション:]を使うことができます。

    パラメーター式

    パラメーターの使用の詳細については、「クエリで入力を求める」を参照してください。

    または、行を使用して別の条件を指定することもできます。抽出条件の使用方法の詳細については、「クエリの抽出条件の例」を参照してください。

    ヒント: 日付フィールドを使用して抽出条件を指定していて、現在の日付よりも古いレコードをすべてアーカイブする場合は、date フィールドの [抽出条件] 行に「 < date () 」と入力します。

  6. 次のいずれかの操作を行います。

    • アーカイブテーブルを既に作成している場合は、追加クエリを使用して、指定したレコードをそのテーブルに追加する必要があります。

      1. [デザイン] タブの [クエリの種類] グループで [追加] をクリックします。

      2. [追加] ダイアログボックスの [テーブル名] ボックスで、アーカイブテーブルの名前を選択し、[ OK] をクリックします。

        追加先

        クエリデザイングリッドで、[追加先] 行が表示されます。

      3. 抽出条件を指定するために使用したフィールドの [追加先] 行をオフにします。(アスタリスクは、[追加先] の値を持つ必要があります)。

        クエリ デザイン グリッドの追加先の行

    • アーカイブテーブルを作成していない場合は、指定されたレコードを使用してアーカイブテーブルを作成するための create table クエリが必要です。

      1. [デザイン] タブの [クエリの種類] グループで [テーブルの作成] をクリックします。

      2. [テーブルの作成] ダイアログボックスの [テーブル名] ボックスに、アーカイブテーブルの名前を入力し、[ OK] をクリックします。

  7. クエリを保存するには、Ctrl キーを押しながら S キーを押します。

手順 3: 元のテーブルから同じデータを削除する delete クエリを作成する

  1. [<ui>作成</ui>] タブの [<ui>その他</ui>] グループで [<ui>クエリ デザイン</ui>] をクリックします。

  2. [テーブルの表示] ダイアログボックスを使用して、アーカイブするレコードが含まれているテーブルを追加します。[テーブルの表示] ダイアログボックスを閉じます。

  3. [クエリデザイン] ウィンドウで、追加したテーブルのアスタリスク (*) をダブルクリックします。テーブル名とアスタリスクは、クエリデザイングリッドの最初の列に表示されます。

  4. クエリデザインウィンドウで、追加クエリの条件を指定するために使用したのと同じフィールドをダブルクリックします。

  5. [抽出条件] 行を使用して、追加したフィールドの抽出条件を指定します。抽出条件の使用方法の詳細については、「クエリの抽出条件の例」を参照してください。

    重要: 追加またはテーブル作成クエリにパラメーターが使われている場合は、削除クエリを実行する必要があります。さらに、両方のクエリに同じ値を入力していることを確認する必要があります。異なるパラメーター値を入力すると、データが失われる可能性があります。データの損失を防ぐために、フォームを使用して値を収集し、クエリで入力値のフォームを要求することを検討してください。詳細については、「クエリで入力を求める」を参照してください。

  6. [デザイン] タブの [クエリの種類] で [削除] をクリックします。

    [ Delete ] 行は、クエリデザイングリッドに表示されます。

    クエリ デザイン グリッドの [削除] 行

  7. クエリを保存するには、Ctrl キーを押しながら S キーを押します。

手順 4: 両方のクエリを実行するマクロを作成する

  1. [<ui>作成</ui>] タブの [<ui>その他</ui>] グループで [<ui>マクロ</ui>] をクリックします。このコマンドを使用できない場合は、[<ui>モジュール</ui>] または [<ui>クラス モジュール</ui>] ボタンの下にある矢印をクリックして、[<ui>マクロ</ui>] をクリックします。

  2. マクロデザイングリッドの最初の行で、[アクション] 列の [ OpenQuery] を選びます。

    クエリのマクロ アクションを開く

  3. グリッドの下部にある [アクションの引数] の [クエリ名] ボックスで、ドロップダウンリストから手順2で作成した (テーブルの追加または作成) クエリを選択します。

    クエリ マクロ アクション クエリ引数を開く

  4. マクロデザイングリッドの2行目で、[アクション] 列の [ OpenQuery] を選びます。

  5. グリッドの下部にある [アクションの引数] の [クエリ名] ボックスで、ドロップダウンリストから [クエリの削除] を選びます。

    マクロは次のようになります。

    保存の準備が整ったマクロ

  6. ctrl + S キーを押してマクロを保存します。

    レコードをアーカイブする場合は、マクロを実行します。

ページの先頭へ

定期的に表を置き換える

常にテーブル内のすべてのデータをアーカイブする場合は、クエリやマクロを使用する必要はありません。別の方法として、定期的に空のコピーを使用してテーブルを置き換えることができます。

重要: アーカイブするテーブルが他のテーブルに関連付けられている場合は、参照整合性を回避する必要がある場合があります。

  1. ナビゲーションウィンドウで、アーカイブするテーブルを選択し、ctrl + C キーを押してから ctrl + V キーを押します。

  2. [テーブルとして貼り付け] ダイアログボックスの [貼り付けのオプション] で [構造のみ] を選択し、[ OK] をクリックします。

    Access には、元のテーブル名のコピーの名前が表示されます。

  3. ナビゲーションウィンドウで、元のテーブルを右クリックし、表示されるショートカットメニューの [名前の変更] をクリックします。

    テーブルには、"DailyTemperatureExtremes_archive_2007" のように、含まれているものを示す名前を付けます。

  4. ナビゲーションウィンドウで、空のコピーを右クリックし、表示されるショートカットメニューの [名前の変更] をクリックします。

    元のテーブル名を空のコピーに渡します。

ページの先頭へ

定期的にすべてのテーブルを置き換える

分割データベースを使用する場合は、バックエンドデータベースを空のコピーで置き換えることによって、すべてのテーブルを定期的に置き換えることができます。

まず、空のコピーを準備します。データベースのデザインが変更されていない限り、アーカイブするたびにこのコピーを再利用できます。次に、アーカイブする場合は、既存のバックエンドデータベースの名前を変更して、それがアーカイブであることを示し、空のコピーを新しいバックエンドデータベースとして保存します。

バックエンドデータベースの空のコピーを準備する

バックエンドデータベース内のすべてのテーブルのテーブル定義をインポートします。

  1. 新しい空のデータベースを作成します。テーブル1を削除します。

  2. [外部データ] タブの [インポート] グループで、[Access] をクリックします。

  3. [外部データの取り込み] ダイアログボックスで、[現在のデータベースにテーブル、クエリ、フォーム、レポート、マクロ、モジュールをインポートする] を選択し、[参照] をクリックします。

  4. [ファイルを開く] ダイアログボックスで、バックエンドデータベースを選びます。[開く] をクリックして [ファイルを開く] ダイアログボックスを閉じ、[ OK] をクリックします。

  5. [オブジェクトのインポート] ダイアログボックスで、[オプション] をクリックします。

  6. [テーブルのインポート] で [定義のみ] を選びます。

  7. [テーブル] タブで [すべて選択] をクリックし、[ OK] をクリックして、[閉じる] をクリックします。

次に、空のコピーの任意のルックアップテーブルにデータを追加します。各ルックアップテーブルについて、次の手順を実行します。

  1. 既存のバックエンドデータベースのルックアップテーブルにリンクします。

  2. 元のすべてのレコードをコピーに追加する追加クエリを作成します。

バックエンドデータベースを空のコピーで置き換える

まず、既存のバックエンドデータベースの名前を変更して、それがアーカイブになったことを示します。

次に、空のコピーを開き、元のバックエンドデータベース名を使用してファイルを保存します。

  1. [ Microsoft Office ボタン Office ボタンの画像 ] をクリックし、[名前を付けて保存] をポイントします。[名前を付けて保存] メニューが開きます。

  2. [データベースを別の形式で保存する] で、[ Access 2007 データベース] をクリックします。

ページの先頭へ

Office のスキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×