Accessには、条件に基づいてデータを抽出する「選択クエリ」があります。選択クエリは既存のデータを変更せず、結果を閲覧するだけの機能です。
一方で、データに変更を加えることができる「アクションクエリ」という種類もあります。その中でも、データを一括して追加できるのが「追加クエリ」です。
この記事では、アクションクエリの一つである「追加クエリ」について、作成方法や使用時の注意点を解説します。
追加クエリとは
既存のテーブルに、新しいデータを一括して追加することができるクエリです。
イメージ的には下図のような感じです。

例では「テーブルB」の全データを、「テーブルA」に一括追加しています。このように別テーブルのデータを自分のテーブルに追加することが、基本的な動作となります。
追加クエリの使用例
追加クエリは様々なシーンで活用されますが、ここでは具体的な例を2点ご紹介します。
事例① 複数人でデータ入力を分担する場面
大量のデータを入力する場合、複数人で作業を分担し、それぞれのAccessファイルで入力を行うケースがあります。たとえば、支店ごとに売上データを入力し、最終的に本部のテーブルに集約するといった運用です。
このとき、集約先のテーブルをリンクテーブルとして各自のAccessに設定してしまうと、複数人が同時にアクセスすることでテーブル破損や処理遅延といったトラブルにつながる可能性があります。
そこで有効なのが追加クエリです。各自のAccessでは一時的な「ワークテーブル」に入力を行い、作業完了後に追加クエリを実行して集約先テーブルにデータを取り込みます。
この方法なら、作業分担による効率化を維持しながら、安全にデータを一元管理できます。
イメージ的にはこんな↓感じです


ワークテーブルとは、別名「一時テーブル」ともいい、一時的なデータを格納する作業用テーブルのことです。
事例② 処理済データを履歴として蓄積する場面
タスク管理や進捗管理のデータベースでは、処理が完了したレコードを履歴として残し、別テーブルに移動して保管することがあります。たとえば、案件の進捗管理で「完了」となったタスクを一覧から消し、履歴テーブルに保存しておくような運用です。
この場合、追加クエリを使えば効率的に履歴を移せます。重要なのは「全件一括」ではなく、条件を指定して必要なレコードだけを対象にすることです。具体的には、「ステータス」フィールドが「処理済」となっているレコードだけを抽出し、それを処理済蓄積テーブルに追加します。
こうすることで、現行のタスク一覧は常に最新の状態を保ちながら、過去の履歴も失わずに管理できます。実務でもよく利用されるパターンです。
イメージ的にはこんな↓感じです


ちなみに、蓄積テーブルに移動したレコードを削除するには「削除クエリ」を使います。追加クエリと削除クエリはセットで使うことも多いんだ。
追加クエリの作成方法
では、ここからは具体的な追加クエリの作成手順を解説します。
【①】新規クエリの作成
メニュー:「作成」→「クエリデザイン」を選択し、新規のクエリ デザインビューを開きます。

【②】データを追加する元のテーブル(クエリ)を選択
新規のデザインビューに、追加するデータが格納されているのテーブルかクエリを配置します。本例では、新規入力用のワークテーブルを配置しています。
テーブル配置後、フィールド一覧から追加対象のフィールドをデザインビューの下部にドラッグします。

本例では、新規入力した全データを追加しますが、前述の使用例で説明したように、特定のレコードのみ追加対象としたい場合は、抽出条件に条件を指定します。
【③】クエリの種類を「追加」に変更
【②】までは選択クエリの状態です。ここから追加クエリに変更するには、クエリの種類を以下の手順で変更する必要があります。
メニュー:「クエリデザイン」 → 「追加」 → 「追加先テーブル名の指定」

本例では、社員管理用のマスタテーブル「M_社員基本情報マスタ」に対して、データを追加するよう指定しています。
【④】追加先フィールドの対応付け
【③】で追加先のテーブルを選択後、画面下部の「レコードの追加」に、追加先テーブルの対応するフィールドが自動的に紐づきます。

この紐づけには条件があり、フィールド名が一致している必要があります。ただし、フィールド名が異なっていても、自動紐づけされないだけで、追加先のフィールドとして指定することができます。
また、大前提として、追加先の紐づけるフィールドはデータ型が一致している必要があります。データ型が異なったまま追加クエリを作成すると、クエリ実行時にエラーとなりますのでご注意ください。
実行
選択クエリから追加クエリに変更が完了すると、ナビゲーションウインドウに表示されるクエリのマークが変更されています。
この状態で追加クエリをダブルクリックすると、下記のメッセージが表示され、「はい」をクリックすると追加クエリが実行されます。(デザインビューで開いて、メニュー「実行」をクリックもしてもOKです。)

また、ツールに機能として組み込む場合は、VBAまたはマクロを使います。
以下はフォームのボタンをクリックしたタイミングで、追加クエリが実行される記載内容です。
Private Sub コマンド6_Click()
DoCmd.SetWarnings False
DoCmd.OpenQuery "IQ_新規登録データ追加"
DoCmd.SetWarnings True
End Sub
docmd.SetWarnings
をFalse
で指定することで、上図で説明した実行の都度表示されるメッセージを非表示にすることができます。
注意点
追加クエリを実行する際、テーブルに主キーや一意制約が設定されていないと、同じデータが重複して追加される恐れがあります。特に、同じ追加クエリを気軽に何度も実行すると、同一データが繰り返し登録されてしまいます。
このような事態を防ぐためにも、主キーや一意制約の設定は重要です。
設定済みのテーブルに同一データを追加しようとした場合は、下記のようなエラーメッセージが表示されます。

このメッセージが表示された場合は、主キーや一意制約に違反するデータが含まれています。内容を確認してから再度追加クエリを実行してください。
まとめ
最後に記事の要点をまとめます。
追加クエリとは何か
既存のテーブルに、新しいデータを一括で追加するタイプのクエリ。選択クエリとは違って、実データを変更・追加する。
追加クエリの使用例
1. 複数人でデータ入力を分担 → 各自のワークテーブルに入力後、本部などの集約先テーブルに追加する。
2. 処理済みデータを履歴テーブルに蓄積する → 「状態(ステータス)」などで条件を付け、必要なレコードのみを移す。
追加クエリを作る手順
1. 新規クエリを作成(クエリデザインビューを開く)
2. データを追加する元テーブル(または元クエリ)を選択する
3. クエリの種類を「追加」に切り替え、追加先テーブルを指定する
4. 追加先フィールドと元フィールドの対応を紐づける。名前だけでなく、データ型が一致していることが重要。
5. 実行。クエリを実行することでデータ追加。VBAやマクロから呼び出すことも可能。
注意点
- 主キーまたは一意制約がないと、同じデータが重複して何度も追加される可能性あり。
- データ型の不一致はエラーの原因になる。フィールド名が違っていても対応付け自体は可能だが、型は揃える必要あり。