Accessデータベースをメンテナンスする際には、重複レコードを定期的に削除することをお勧めします。データ入力プロセスを熟知していても、重複レコードは発生する可能性があります。例えば、同じ顧客が2つの異なる口座番号で重複して登録されている場合があります。また、2つの異なる顧客レコードの「番地」フィールドに同じ住所が記載されているものの、正しいのは片方だけという場合もあります。幸いなことに、レコードの削除は必ずしも長くて面倒な作業ではありません。重複検索クエリウィザードを使えば、こうした不一致を数秒で見つけることができます。
ウィザードの使用
この手法がどのように機能するかを示すために、重複検索クエリ ウィザードを使用して、図 Aに示す顧客テーブル内のどの顧客が、住所フィールドに同じ住所を割り当てられているかを判断します。 (ここで使用するサンプル テーブルには 20 件未満のレコードしかありませんが、同じ手法は任意のサイズのデータベースに適用できます。)
図A |
![]() |
まず、データベースウィンドウの「オブジェクト」の下にある「クエリ」をクリックします。次に、ツールバーの「新規」ボタンをクリックして、図Bに示すダイアログボックスを表示します。
図B |
![]() |
[重複の検索クエリ ウィザード] を選択し、[OK] をクリックして、図 Cに示すように、ウィザードの最初の画面をアクティブにします。
図C |
![]() |
この画面では、重複を検索するテーブルとしてCustomersテーブルが選択されています。「次へ」をクリックして続行してください。
図D |
![]() |
図Dに示す画面は、重複値を検索するフィールドを選択するために使用します。この例では、同じ住所への重複した郵送物を除外するため、「番地」フィールドを選択します。「次へ」をクリックすると、図Eに示す画面が表示され、クエリ結果で「番地」フィールドと共に表示するフィールドを選択します。
図E |
![]() |
図 Fに示す最後の画面で、クエリの名前を入力し、「完了」をクリックします。
図F |
![]() |
図Gに示されている結果は、2人の異なる顧客に同じ住所が割り当てられている一方で、他の2人の顧客にはそれぞれ異なる顧客IDが割り当てられていることを示しています。さらに調査した結果、Bernadette Williamsonの番地は834ではなく384であることがわかりました。これで、重複レコードを手動で削除し、Williamsonの住所に必要な修正を加えることで、Customersテーブルを修正できます。これは、クエリ結果テーブルから直接行うことができます。
図G |
![]() |
追加クエリによる重複の削除
上記の例では、重複レコードは2件しか見つかりませんでした。しかし、Customersデータベースに数千件のレコードがあり、重複検索クエリウィザードを実行した結果、数百件の重複レコードが見つかった場合はどうなるでしょうか? クエリ結果テーブルからこれらの重複レコードをすべて手動で削除するのは非常に非現実的です。代わりに、追加クエリを使用すれば、Accessが自動的に重複レコードを削除できます。
まず、重複を含むテーブルの構造のコピーを作成します。データベースウィンドウで「Customers」テーブル名をクリックし、ツールバーの「コピー」ボタンをクリックします。次に、「貼り付け」ボタンをクリックすると、図Hに示す「テーブルに名前を付けて貼り付け」ダイアログボックスが表示されます。図のように、テーブル構造のコピーの名前を入力します。オプションで「構造のみ」を選択します。「OK」をクリックすると、空の「Customers Without Duplicates」テーブルが作成されます。
図H |
![]() |
「重複のない顧客」テーブルをデザインビューで開き、図Iに示すように、主キーを「番地」に変更します。「番地」フィールドを主キーフィールドにすることで、重複する番地を持つレコードが新しいテーブルにコピーされなくなります。
図I |
![]() |
これで、元のテーブルに対して追加クエリを作成する準備が整いました。デザインビューで「Customers」のクエリを作成します。アスタリスク(*)をクエリデザイングリッドにドラッグして、元のテーブルのすべてのフィールドを追加します。次に、図Jに示すように、クエリの種類ドロップダウンリストから「追加クエリ」を選択します。
図J |
![]() |
[追加] ダイアログ ボックスで、図 Kに示すように、空のデータベース「Customers Without Duplicates」を選択します。
図K |
![]() |
「実行」ボタンをクリックします。レコードを新しいファイルに追加するかどうかを尋ねるダイアログボックスで、「はい」をクリックします。図Lに示すようなダイアログボックスが表示され、主キーフィールド(この場合は「番地」フィールド)に重複した値があるため、一部のレコードをコピーできなかったことが示されます。「はい」をクリックします。
図L |
![]() |
クエリ結果テーブルには、各住所につき1件のレコードのみが含まれます。「重複のない顧客」テーブルが正しいことを確認したら、元のテーブルを削除してください。
ウィザードを使用する場合
この記事で説明したように、重複検索クエリウィザードは、個々のフィールドで重複エントリをチェックする場合や、変更が手動で処理できるほど小さい場合に適しています。それ以外の場合、多数の重複レコードを削除する必要がある場合は、追加クエリを使用する方が実用的です。ただし、データをクリーンな状態に保つために、重複検索クエリウィザードを定期的に実行することをお勧めします。そうすれば、追加クエリを実行する必要がなくなるかもしれません。
すべてのアクセスマスターに呼びかけ
Access 2000の達人だと自負しているなら、今こそ挑戦する時です。この記事にコメントを投稿して、Accessのとっておきのヒントやコツを共有してください。