Accessクエリ入門シリーズ8回目の今回は、追加クエリについて解説していきます。
もくじ
追加クエリはAccessのテーブルに新しいデータを追加するときに使うクエリで、SQLのINSERT文に相当する機能です。
また、INSERT文はデータベースを扱う人は必ず知っておかないといけない知識の一つでもあります。
クエリの編集画面からだけでなく、Accessフォームを使った入力作業やバッチ処理など、Accessを使用するさまざまなシーンでもよく使われる機能ですので、しっかりと習得しておきましょう。
本記事では、Access追加クエリの基本的な使い方だけでなく、SQL文の中身や注意点についても解説しています。
いまAccess学習の真っ最中の方は、本記事の内容をぜひ学習に活用してください。
追加クエリを使う手順
手順1-選択クエリを作る
ここに空テーブル「T99_部品単価一覧表」があります。
他のテーブルデータを使い、まとまったデータを一括追加していきます。
新しい空のクエリを作ります。
追加したいデータを作るときは「選択クエリ」のままで編集しましょう。
クエリ内にテーブル「T01発注先マスタ」「T01部品マスタ」「T01価格マスタ」を追加します。
追加したいテーブル構成に合わせてフィールドを選択しましょう。
追加クエリでは、フィールドを選択するだけでなく、必要に応じて抽出条件を抽出したり、集計関数を使うこともできます。
手順2-追加クエリに切り替える
追加したいデータを作り終わったら、選択クエリを追加クエリに切り替えます。
クエリデザインの追加をクリックします。
追加先のテーブルを選びます。
そのままOKをクリックします。
クエリのデザイングリッドの項目が変わり、追加先テーブルのフィールドも表示されました。
これで追加先のフィールドを選ぶことができました。
「レコードの追加」に何も表示されない場合は、フィールド名などが間違っていることもありますので、クエリを実行する前によく確認しておきましょう。
手順3-クエリを実行する
では、追加クエリを実行して空のテーブルにデータを追加していきます。
実行ボタンをクリックします。
確認ダイアログが表示されますが、そのまま続けます。
追加先のテーブル「T99_部品単価一覧」を確認すると、データが正しく追加されているようです。
追加クエリのアイコンは他のクエリとデザインが異なるので、探すときの目印にしてください。
追加クエリをクリックすると、実行ボタンを押したときと同じ動きを再現します。
実行した回数だけ重複してデータ追加されてしまいますので、追加クエリのアイコンを触るときは特に注意しましょう。
追加クエリのSQL文について
では、追加クエリを作ったときに自動作成されたSQL文を確認してみましょう。
SQLビューに切り替えると、下の画像のようにSQL文が作られています。
中身をよく見ると、INSERT文とSELECT文の両方が混在しているようです。
他のデータベースでも共通して使われるINSERT文の基本は、以下のような書き方です。
INSERT INTO [追加先のフィールド名] VALUES ( [追加したいデータ])
一方、ACCESSの追加クエリで作成させたSQLは以下の書き方です。
INSERT INTO [追加先のフィールド名] SELECT文
この書き方は「Accessだけに見られる書き方で、他のデータベースにはそのまま転用できない」ということは頭に入れておきましょう。
追加クエリを使うときの注意点
注意点1-単一データを追加する場合
Accessの追加クエリは、主にまとめたデータを一括追加したい時に使われますが、状況によっては1件分だけデータを追加したい時もあります。
そんな時はSQL共通で使われるINSERT文をそのまま使用することをオススメします。
試しに、以下の設定で1件分だけデータを追加するクエリを作ってみました。
- 「T01部品マスタ」に「鉄 アングル」という商品を「SUS アングル」に書き換えてデータを追加
単一データを追加されるようにクエリを編集すると、書き方は下の画像のようになります。
1件の項目を入力するために、データ項目を直接手入力する人はおそらくいないでしょう。
参考までにSQLビューを確認してみると、やはりINSERTとSELECTが混在しています。
一方、下のようにSQL共通のINSERT文に変えても正しくクエリは実行されます。
1件分だけデータを追加する場合、追加クエリをそのまま使うのではなく、VBAコードの中に基本に忠実なINSERT文を盛り込んだ方がより現実的です。
注意点2-追加クエリの実行エラーが発生する原因
追加クエリを実行されずにエラーが発生するパターンについても触れておきましょう。
追加クエリを実行するときに注意しないといけないことは、データベース設計に違反した書き方になっていないかということです。
単一データを追加するときに使ったクエリを少しだけ編集してみます。
変更後では『小分類ID』を削除してみました。
クエリを実行してみると、エラーで先に進めません。
テーブル『T01部品マスタ』の『小分類ID』は、テーブル『T00小分類マスタ』間でリレーションシップが組まれています。
Accessでは、リレーションシップに関係するフィールドにデータが入力されないと、対象のレコードの追加が出来ない仕組みになっています。
もし似たようなエラーが発生した場合は、リレーションシップを含むデータベース設計に違反した書き方になっていないかを見直すと、いち早く原因を突き止めることができるでしょう。
まとめ
今回は、Accessの追加クエリの使い方を解説しました。
Accessの追加クエリを使うことで、大量のデータを一括で追加することができるので便利です。
一方で、1件分だけデータを追加したいときは、INSERT文をそのまま使うのをおすすめします。
また、追加クエリの実行エラーが発生するときは、リレーションシップなどのデータベース設計に違反していないかを見直すとよいでしょう。
次回は、削除クエリについて解説します。