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

重要:  この記事は機械翻訳されています。機械翻訳についての「免責事項」をお読みください。この記事の英語版を参照するには、ここをクリックしてください。

古いレコードや使われていないレコードを定期的にアーカイブすると、データベースを常に整理しておくことができます。たとえば、Access を使用して物品の貸し出しを管理しているとしましょう。その場合、貸し出し処理を追跡するテーブルがあり、物品が借り出された日付を含むフィールドと、返却された日付を含むフィールドが設定されていることが考えられます。また、レコードを保持するポリシーとしては、物品の返却から 1 年後にその貸し出し処理レコードをアーカイブし、2 年後にレコードを破棄することが考えられます。

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

この記事の内容

概要

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

テーブルを定期的に置き換える

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

概要

今後使用する予定のないデータがあり、万一必要になったときに備えてそのデータを保持しておきたい場合には、データをアーカイブすることを検討してください。組織によっては、データ保持ポリシーなど、アーカイブ計画の目安となるポリシーが設定されている場合もあります。

アーカイブは、月末など日付の条件に基づいてデータを保存するために使用されることが多くあります。

データのアーカイブ方法

次の表に、データのアーカイブ方法の一覧、各方法を使用する状況、およびその他の考慮事項を示します。

方法

説明

使用する状況

他の考慮事項

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

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

アーカイブするかどうかを決定する条件にテーブル内の一部のレコードが一致する場合。

例: 貸し出し処理のレコードを、返却日から 1 年以上過ぎた場合にアーカイブする。

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

  • クエリでパラメーターを使用する必要がある場合は、パラメーターを処理するフォームを作成する必要があります。そうしないと、データが失われる可能性があります。

テーブルを定期的に置き換える

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

アーカイブするかどうかを決定する条件にテーブル内のすべてのレコードが一致する場合。

例: 毎日の最高気温を格納するテーブルがあり、1 年ごとにテーブルをアーカイブして空のテーブルで新たに開始する。

  • 参照整合性の問題の回避が必要になる場合があります。

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

分割データベース (すべてのテーブルを含むバックエンド データベース ファイルと、他のすべてのデータベース オブジェクトを含むフロントエンド データベース ファイルから構成されるデータベース) を使用して開始します。定期的に、バックエンド データベースのアーカイブ コピーを作成してから、そのバックエンド データベースを新しい空のデータベースで置き換えます。

アーカイブするかどうかを決定する条件に、データベースのほとんどのテーブル内のすべてのレコードが一致する場合。

例: 異なる種類の気象データを含むいくつかのテーブルからデータベースが構成され、1 年ごとにすべてのテーブルをアーカイブする。

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

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

参照整合性の問題を回避する

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

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

    または

  • "子" レコードが "孤立" した状態 (存在しない "親" に属した状態) になる。この場合、それらの "子" レコードを使用しているデータベースでデータ整合性やさまざまな機能に問題が生じる可能性があります。

参照整合性の問題を回避するには、次の手順を実行します。

  1. アーカイブするレコードにどのような "子" レコードが属しているかを確認します。たとえば、貸し出し用物品のレコードをアーカイブする場合には、それらの物品に対して未完了の処理がないかどうか (つまり、物品が貸し出されて未返却でないかどうか) を最初に確認します。

  2. 次のいずれかを実行します。

ページの先頭へ

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

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

ヒント: フォーム上のボタンにマクロを割り当てて、ボタンがクリックされるとマクロが実行されるようにすることもできます。

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

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

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

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

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

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

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

アーカイブを行うたびに新しいアーカイブ テーブルを使用し、古いアーカイブ テーブルは別に保持しておく場合は、新しいアーカイブ テーブルを作成する前に古いアーカイブ テーブルの名前を変更します。日付に基づいてアーカイブを行っている場合は、古いアーカイブ テーブルの名前にその対応期間の日付を含めることをお勧めします。

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

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

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

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

    テーブルの貼り付け

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

  1. [作成] タブの [その他] で、[クエリ デザイン] をクリックします。

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

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

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

  4. クエリ デザイン ウィンドウで、レコードをアーカイブする条件を指定するためのフィールドをダブルクリックします。たとえば、Transactions テーブルに "Checked In Date" というフィールドがあり、日付が 1 年以上前であるレコードをすべてアーカイブする場合には、"Checked In Date" フィールドをダブルクリックします。クエリ デザイン グリッドの次の空の列に、そのフィールドが表示されます。

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

    他のフィールドも条件に使用する場合は、この手順を繰り返します。

  5. 追加したフィールドの抽出条件を指定するのには、抽出条件] 行を使用します。たとえば、可能性があります指定した日付で確認する必要があります、2008 年 1 月 1 日より前の式を使用して< 1/1/2008年 #抽出条件] 行にします。

    抽出条件の値の変更を保存するたびに、入力を求めるクエリがする必要があります。これを行うには、パラメーターを使用する抽出条件] 行で、クエリで入力を求められるようにします。パラメーターを使用するには、通常が、指定された値ではなく、角かっこで囲んで簡単な質問を使用して式を使用します。式を使用するたとえば、 < [前に完了取引をアーカイブ:]、次のようにします。

    パラメーター式

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

    必要に応じて、[または] 列を使用して代替条件を指定します。抽出条件の使用の詳細については、「クエリの抽出条件の例」を参照してください。

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

  6. 次のいずれかを実行します。

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

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

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

        追加先

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

      3. 条件の指定に使用するすべてのフィールドに対して [追加先] 行をクリアします ([追加先] に値があるのはアスタリスクの付いたフィールドのみ)。

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

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

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

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

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

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

  1. [作成] タブの [その他] で、[クエリ デザイン] をクリックします。

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

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

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

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

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

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

    クエリ デザイン グリッドに [削除] 行が表示されます。

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

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

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

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

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

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

  3. グリッドの下にある [アクションの引数] の [クエリ名] ボックスの一覧で、手順 2. で作成した追加クエリまたはテーブル作成クエリを選択します。

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

  4. マクロ デザイン グリッドの 2 番目の行の [アクション] 列で、[クエリを開く] をクリックします。

  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 Insider に参加する

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

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

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

×