追加クエリ

 追加クエリはアクションクエリと呼ばれるものの一つです。
 この追加クエリにより、ほかのテーブルやクエリにあるレコードを、別のテーブルに一括して追加することができます。
 手作業のコピーペーストでうまくいく場合もありますが、追加クエリでは追加するレコードの条件を定めるなど細かい設定が可能となっています。

手順

f:id:accs2014:20181227031648p:plain:right:w550

 サンプルとして、この「顧客テーブル」にレコードを追加するものとします。

f:id:accs2014:20181227031645p:plain:right:w550

 追加するレコードはこちらの「新規顧客テーブル」のレコードです。
 ただし「住所」列に値のない1つのレコードについては、追加しないものとします。
 また、テーブルのつくりは上記のテーブルと全く同じように見えますが、上記のテーブルでは「氏名」列、こちらのテーブルでは「名前」列となっていて列名が異なることに注意してください。

f:id:accs2014:20181227031643p:plain:right:w500

 さて、まずは普通に選択クエリを作成します。
 ここで、クエリに置くテーブルは追加するレコードがあるテーブル、つまり「新規顧客テーブル」の方です。
 「住所」列に値がないレコードは追加しませんので、「住所」列の抽出条件欄に「Is Not Null」と記入します。

f:id:accs2014:20181227031641p:plain:right:w450

 ここでクエリをデータシートビューでみてみます。
 住所の値が記録されている2つのレコードが抽出されています。



f:id:accs2014:20181227031638p:plain:right:w500

 デザインビューに戻り、デザインタブにある「追加」メニューをクリックします。

f:id:accs2014:20181227031819p:plain:right:w500

 すると追加先のテーブルを聞いてきますので「顧客テーブル」を選択してOKとします。

f:id:accs2014:20181227031816p:plain:right:w650

 そしてクエリを保存するとクエリのアイコンが変化します。
 さて、デザイングリッドに「レコードの追加」という欄が現れているのがわかります。
 これは、それぞれの列が、レコードの追加先である「顧客テーブル」のどの列に対応するのかを選択する欄です。
 「顧客コード」と「住所」については両方のテーブルで列名が同じなので自動選択されていますが、「名前」列については列名が一致していないので空欄となっています。このままでは「名前」列の値は「顧客テーブル」に追加されません(レコードの追加はできますが、追加されたレコードの「氏名」欄が空欄になります)。

f:id:accs2014:20181227031813p:plain:right:w500

 そこで、手動で「氏名」列を選択します。

f:id:accs2014:20181227031811p:plain:right:w450

 さて、以上で設定は終了です。
 レコードを追加するときには「実行」メニューをクリックします(クエリを開いていない状態で、左のナビゲーションウインドウのクエリのアイコンをダブルクリックするという方法もあります)。

f:id:accs2014:20181227031808p:plain:right:w450

 確認メッセージが出ますので「はい」とします。

f:id:accs2014:20181227031847p:plain:right:w550

 実行後に顧客テーブルを開いた様子です。
 確かに(住所の値がある)2つのレコードだけが追加されています。

備考

 他のアクションクエリと比べて若干操作が複雑ですし、実行した結果、追加先のテーブルのデータ型や入力規則に適合しなかったり、主キーの値の重複が生じたりするとエラーとなります。このためアクションクエリの中でも特にエラーが出やすいので注意してください。