「毎月末に締めた売上データを別テーブルに一括移動したい」「商品の価格を一斉に改定したい」「試験終了後に受験者の仮登録データをまとめて削除したい」「集計結果を新しいテーブルとして保存してレポートの処理を高速化したい」——こうした「データの大量操作を一括で実行する」要求に応えるのが、Accessのアクションクエリです。
通常の選択クエリはデータを「読む(参照する)」だけですが、アクションクエリはテーブルの中身を実際に「書き換える(追加・更新・削除・作成)」操作をクエリとして定義し、1クリックで繰り返し実行できます。VBAのコードを書かなくても、デザインビューの設定とクリック操作だけで複雑なデータ操作を自動化できるのがAccessのアクションクエリの強みです。
MOS Access 365試験(MO-500)では、アクションクエリの作成と実行が出題範囲に含まれます。4種類のアクションクエリの違いと各クエリのデザインビューでの設定手順を確実に習得することが合格への近道です。本記事では、アクションクエリの基礎知識から追加・更新・削除・テーブル作成クエリの作成手順・実務パターン・よくあるエラーと対処法・MOS試験対策ポイントまで、ステップごとに徹底解説します。
「アクションクエリと選択クエリの違いが曖昧」「更新クエリの式の書き方が分からない」「追加クエリで追加先フィールドの対応付けでつまずいている」という方は、ぜひ最後まで読んでください。
アクションクエリと選択クエリの違い
選択クエリはデータを「表示する」だけで、テーブルの中身は一切変更されません。一方、アクションクエリを実行すると、指定した条件に従ってテーブルのデータが実際に変更されます。この大きな違いを先に整理しておきましょう。
| クエリの種類 | 動作 | テーブルへの影響 | 主な用途 |
|---|---|---|---|
| 選択クエリ | データの読み取り・表示 | なし(参照のみ) | 抽出・集計・一覧表示 |
| 追加クエリ | 別テーブルへのレコード追加 | 追加先テーブルに行が追加される | データ移動・コピー・アーカイブ |
| 更新クエリ | フィールドの値の書き換え | 既存レコードが上書きされる | 一括価格改定・ステータス変更 |
| 削除クエリ | 条件に合うレコードの削除 | 指定レコードが完全に削除される | 不要データの一括削除 |
| テーブル作成クエリ | 新しいテーブルの作成 | 新しいテーブルが作成される | スナップショット保存・中間テーブル作成 |
アクションクエリを実行するとデータが変更されるため、実行前に必ずバックアップを取るか、事前に選択クエリで対象レコードを確認してから実行するのが基本の習慣です。Accessはアクションクエリ実行時に「XXXXレコードを更新します。元に戻す操作はできません。続けますか?」という確認ダイアログを表示しますが、[はい]をクリックすると取り消せません。
アクションクエリの共通の作成フロー
4種類のアクションクエリはいずれも「まず選択クエリを作成してから種類を変換する」という同じフローで作成します。このフローを先に把握しておくと、4種類それぞれの手順が理解しやすくなります。
- デザインビューで選択クエリを作成する:[作成]タブ→[クエリデザイン]でデザインビューを開き、操作対象のテーブルを追加し、必要なフィールドと条件を設定する
- 選択クエリとして実行して対象レコードを確認する:[実行]ボタンをクリックして対象レコードが意図どおり絞り込まれているかを目視で確認する(この確認ステップを省略すると意図しないデータを操作するリスクがある)
- アクションクエリの種類に変換する:[デザイン]タブの[クエリの種類]グループにある「追加」「更新」「削除」「テーブルの作成」のいずれかをクリックして変換する
- 種類固有の設定を行う:追加クエリでは追加先テーブルとフィールド対応付け、更新クエリでは更新値の入力、削除クエリでは条件の確認、テーブル作成クエリでは新テーブル名の指定を行う
- [実行]ボタンをクリックして確認ダイアログで[はい]を選ぶ:アクションクエリが実行されてテーブルのデータが変更される
追加クエリの作成手順(別テーブルへのレコード追加)
追加クエリは、あるテーブル(またはクエリ)から条件に合うレコードを選んで、別のテーブルに一括追加します。履歴テーブルへのアーカイブ・一時テーブルへのデータコピー・別部署のデータベースへの転送などに活用します。
ステップ1:追加元テーブルでデザインビューを開く
Accessを起動してデータベースを開きます。[作成]タブの[クエリ]グループにある[クエリデザイン]をクリックしてデザインビューを開きます。「テーブルの追加」ダイアログが表示されたら、追加元にするテーブルを選んで[追加]をクリックしてダイアログを閉じます。追加したいフィールドをデザイングリッドに追加し、絞り込み条件を入力します。まず[実行]ボタン(!アイコン)をクリックして選択クエリとして実行し、対象レコードが正しく表示されることを確認します。
ステップ2:追加クエリに変換する
[デザイン]タブ(クエリツール)の[クエリの種類]グループにある「追加」ボタンをクリックします。「追加」ダイアログが表示されます。「テーブル名」ドロップダウンから追加先のテーブルを選択します。同じデータベース内のテーブルを選ぶ場合は「現在のデータベース」を選択してテーブルの一覧から対象を選びます。外部のデータベースに追加する場合は「他のデータベース」を選択してパスを指定します。[OK]をクリックするとデザイングリッドに「フィールドの追加先」行が追加されます。
ステップ3:追加先フィールドを対応付ける
デザイングリッドの各列に「フィールドの追加先」行が表示されます。追加元フィールドと追加先フィールドの名前が一致する場合は自動で対応付けされますが、フィールド名が異なる場合はドロップダウンから正しい追加先フィールドを選択します。追加する必要のないフィールドは「フィールドの追加先」行を空欄にします。
ステップ4:クエリを実行する
[実行]ボタンをクリックすると「XXXXレコードを追加します。元に戻す操作はできません。続けますか?」という確認メッセージが表示されます。[はい]をクリックすると追加が実行されます。追加後は追加先テーブルを開いて、意図したレコードが正しく追加されているかを確認します。
更新クエリの作成手順(フィールド値の一括書き換え)
更新クエリは、条件に合うレコードの特定フィールドを新しい値に一括で書き換えます。価格の一斉改定・ステータスフラグの更新・計算結果の反映などに活用します。更新は元の値に戻せないため、事前確認が特に重要なアクションクエリです。
ステップ1:選択クエリで対象レコードを確認する
[作成]→[クエリデザイン]でデザインビューを開き、更新するテーブルを追加します。更新するフィールドと条件のフィールドをデザイングリッドに追加し、条件を入力します。必ず一度[実行]ボタンをクリックして選択クエリとして実行し、更新対象のレコードだけが表示されているかを確認します。この確認ステップを省略すると、意図しないレコードまで更新してしまうリスクがあります。
ステップ2:更新クエリに変換する
対象レコードの確認が完了したら、[デザイン]タブの[クエリの種類]グループにある「更新」ボタンをクリックします。デザイングリッドに「レコードの更新」行が追加されます。「並べ替え」行と「表示」チェックボックスは非表示になり、代わりに「レコードの更新」行が表示されます。
ステップ3:更新する値を入力する
「レコードの更新」行に、更新後の値または計算式を入力します。入力形式の例を確認しておきましょう。
| 更新の内容 | 「レコードの更新」行への入力例 |
|---|---|
| 固定の文字列に変更 | “完了” |
| 固定の数値に変更 | 0 |
| 現在の値を10%値上げ | [単価]*1.1 |
| 別フィールドの値をコピー | [確認済み価格] |
| 文字列を結合して更新 | [姓] & ” ” & [名] |
| 日付を今日の日付に更新 | Date() |
フィールド名は必ず半角の角括弧([ ])で囲みます。テキスト型フィールドへの固定値は半角のダブルクォーテーション(” “)で囲みます。数値型フィールドへの固定値は囲まずに数値をそのまま入力します。
ステップ4:クエリを実行する
[実行]ボタンをクリックすると「XXXXレコードを更新します。元に戻す操作はできません。続けますか?」という確認メッセージが表示されます。[はい]をクリックすると更新が実行されます。実行後はテーブルを開いて値が正しく更新されているかを確認します。更新前の値に戻す手段はないため、事前のバックアップが重要です。
削除クエリの作成手順(条件に合うレコードの一括削除)
削除クエリは、条件に合うレコードをテーブルから完全に削除します。不要になった仮登録データの削除・一定期間前のログの削除・重複行の整理などに活用します。削除したレコードは一切復元できないため、4種類のアクションクエリの中で最も慎重な事前確認が求められます。
ステップ1:削除対象を選択クエリで確認する
[作成]→[クエリデザイン]でデザインビューを開き、削除元テーブルを追加します。削除条件に使うフィールドをデザイングリッドに追加し、条件を入力します。必ず一度[実行]ボタンをクリックして選択クエリとして実行し、削除対象のレコードだけが表示されているかを慎重に確認します。意図しないレコードが含まれていないかを件数・内容の両面から確認することが重要です。
ステップ2:削除クエリに変換する
[デザイン]タブの[クエリの種類]グループにある「削除」ボタンをクリックします。デザイングリッドに「削除」行が追加されます。条件を指定しているフィールドの「削除」行には「Where」が自動設定されます。テーブルのすべてのフィールドを対象とする場合、テーブルフィールドリストの「*(すべてのフィールド)」をデザイングリッドに追加すると「削除」行に「From」が設定されます。この場合、条件フィールドは別の列で指定します。
ステップ3:クエリを実行する
[実行]ボタンをクリックすると「XXXXレコードを削除します。元に戻す操作はできません。続けますか?」という確認メッセージが表示されます。削除件数が想定どおりかを再確認してから[はい]をクリックします。実行後はテーブルを開いて対象レコードが削除されているかを確認します。
なお、参照整合性が設定されているテーブルで他のテーブルから参照されているレコードを削除しようとすると「このレコードは関連するレコードが存在するため削除できません」というエラーが発生します。この場合はリレーションシップの「関連フィールドの連鎖削除」オプションを確認し、削除の順序を検討する必要があります。
テーブル作成クエリの作成手順(クエリ結果を新テーブルに保存)
テーブル作成クエリは、選択クエリの結果を新しいテーブルとして保存します。レポート用の集計済みテーブルの作成・バックアップ用スナップショットの作成・複雑なクエリを中間テーブルとして保持してパフォーマンスを改善するといった用途に使います。
ステップ1:元の選択クエリを構成する
[作成]→[クエリデザイン]でデザインビューを開き、元データのテーブルを追加します。新テーブルに含めたいフィールドと条件を設定して、まず選択クエリとして[実行]をクリックして結果を確認します。新テーブルにしたい内容が正しく表示されていることを確認してからデザインビューに戻ります。
ステップ2:テーブル作成クエリに変換する
[デザイン]タブの[クエリの種類]グループにある「テーブルの作成」ボタンをクリックします。「テーブルの作成」ダイアログが表示されます。「テーブル名」欄に新しく作成するテーブルの名前を入力します。「現在のデータベース」を選択すると同じデータベースファイル内に作成され、「他のデータベース」を選択すると外部データベースファイルへの保存先パスを指定できます。[OK]をクリックします。
ステップ3:クエリを実行する
[実行]ボタンをクリックすると「XXXXレコードで新しいテーブルを作成します。元に戻す操作はできません。続けますか?」という確認メッセージが表示されます。[はい]をクリックすると新テーブルが作成されます。同名のテーブルが既に存在する場合は「既存のテーブルを削除してから新しいテーブルを作成します。続けますか?」という上書き確認が追加で表示されます。実行後はナビゲーションウィンドウに新テーブルが表示されていることを確認します。
テーブル作成クエリで作成したテーブルには、元テーブルのリレーションシップや主キー設定が引き継がれません。必要に応じて作成後のテーブルにデザインビューで主キーやインデックスを設定します。
アクションクエリの実務活用パターン(想定例)
以下の活用例はAccess業務システムの典型的なシナリオを元にした想定例です。実際の業務での操作手順や効果は環境・データ量・構成によって異なります。
想定例1:月末締め処理でのデータアーカイブ(追加クエリ+削除クエリ)
受注管理データベースでは、毎月末に「受注テーブル」から当月分のレコードを「受注履歴テーブル」にコピーする追加クエリと、コピー完了後に「受注テーブル」から当月分を削除する削除クエリを、この順番でマクロのOpenQueryアクションに並べて設定する方法が典型的なパターンです。月次処理をマクロに組み込んでおくことで、毎月末の締め処理をボタン1回のクリックで完了できるようになります。
想定例2:一括価格改定(更新クエリ)
商品テーブルの全レコードまたは特定カテゴリのレコードに対して、更新クエリの「レコードの更新」行に「[単価]*1.05」と入力することで現行価格を5%値上げする更新を一括実行できます。一般的には、改定前にテーブル作成クエリでスナップショットテーブルを保存してからアクションクエリを実行するという手順が推奨されます。
想定例3:レポート高速化のための集計中間テーブル(テーブル作成クエリ)
複数テーブルを結合しつつ集計を行う複雑なクエリをレポートのレコードソースとして直接使用すると、レポートを開くたびに再計算が発生して表示が遅くなることがあります。一般的な対策として、定期的にテーブル作成クエリを実行して集計済みの中間テーブルを作成し、そのテーブルをレポートのレコードソースに設定する方法があります。日次でテーブル作成クエリを実行するようにマクロを設定することで、レポートの表示速度が改善される場合があります。
よくあるエラーと対処法
| エラー・症状 | 原因 | 対処法 |
|---|---|---|
| 「参照整合性の規則に違反する」エラー | 外部キーが設定されているテーブルで参照先に存在しないレコードを追加しようとした | 追加先テーブルのリレーションシップ設定を確認し、追加前に参照先レコードを用意する |
| 「データ型が一致しない」エラー | 追加元と追加先のフィールドのデータ型が異なる | 追加先フィールドのデータ型を確認し、必要に応じて型変換関数(CStr・CInt・CDbl等)で変換する |
| 更新・削除クエリが全件対象になってしまう | 条件行が空欄のまま実行した | デザイングリッドの条件行に必ず絞り込み条件を入力する。必ず事前に選択クエリで対象レコードを確認してから種類を変換する |
| 「XXX件のレコードが更新されませんでした」メッセージ | フィールドのサイズ制約を超える値を設定しようとした / ロックされたレコードがある | フィールドの型・サイズ設定を確認し、更新値が制約を満たしているか確認する |
| アクションクエリの確認ダイアログが表示されない | 確認メッセージを表示しない設定になっている | [ファイル]→[オプション]→[クライアントの設定]→「アクションクエリの確認」のチェックをオンに戻す |
| 削除クエリで「関連するレコードがある」エラー | 参照整合性が設定されていて、他テーブルから参照されているレコードを削除しようとした | リレーションシップの「関連フィールドの連鎖削除」オプションを確認するか、子テーブルのレコードを先に削除してから親テーブルを削除する順序に変更する |
| テーブル作成クエリで主キー・インデックスが設定されない | テーブル作成クエリは元テーブルの制約を引き継がない仕様 | 作成後のテーブルをデザインビューで開き、主キー・インデックスを手動で設定する |
MOS Access 365試験対策(MO-500)
MOS Access 365試験(MO-500)では、アクションクエリの作成と実行がクエリのスキル領域の出題範囲に含まれます。試験本番で迷わないよう、以下のポイントを整理しておきましょう。
- 4種類の変換方法を習得する:選択クエリをデザインビューで作成してから[クエリの種類]グループで「追加」「更新」「削除」「テーブルの作成」に変換する操作手順を繰り返し練習する
- 実行前に選択クエリで確認する習慣を付ける:試験でもアクションクエリを実行前に「選択クエリとして表示させて対象を確認する」という手順を必ず実践する
- 更新クエリの「レコードの更新」行への入力形式を覚える:固定値・計算式・フィールド参照それぞれの入力形式を正確に書けるようにする。フィールド名は[ ]で囲む・テキスト文字列値は” “で囲む
- 追加クエリの「フィールドの追加先」対応付けを練習する:追加クエリでは「フィールドの追加先」行が自動設定されるが、フィールド名が異なる場合の手動対応付け操作を確認する
- テーブル作成クエリのダイアログ操作を確認する:「テーブルの作成」ダイアログで新テーブル名を入力する操作・現在のデータベースと他のデータベースの選択方法を確認する
- 確認ダイアログで[はい]をクリックして実行を完了させる:試験環境でアクションクエリ実行時の確認ダイアログが表示されたら[はい]をクリックすることで操作が完了する
MOS試験 アクションクエリ操作チェックリスト
| 確認ポイント | 操作内容 | 難易度 |
|---|---|---|
| デザインビューを開く | [作成]→[クエリデザイン]でデザインビューを起動できる | ★☆☆ |
| 追加クエリへの変換 | [クエリの種類]グループの「追加」を選択し、追加先テーブルを指定できる | ★☆☆ |
| 追加先フィールドの対応付け | 「フィールドの追加先」行で追加元と追加先フィールドを正しく対応付けできる | ★★☆ |
| 更新クエリへの変換 | [クエリの種類]グループの「更新」を選択し、「レコードの更新」行が表示されることを確認できる | ★☆☆ |
| 更新値・計算式の入力 | 「レコードの更新」行に更新後の固定値または計算式を正しく入力できる | ★★☆ |
| 削除クエリへの変換 | [クエリの種類]グループの「削除」を選択し、条件フィールドに「Where」が設定されることを確認できる | ★☆☆ |
| テーブル作成クエリへの変換 | [クエリの種類]グループの「テーブルの作成」を選択し、テーブル名を指定して新テーブルを作成できる | ★☆☆ |
| 確認ダイアログへの対応 | アクションクエリ実行時の確認ダイアログで[はい]をクリックして実行を完了できる | ★☆☆ |
試験時間は50分、採点は1,000点満点で実施されます。合格点は非公開で550点~850点が目安とされています。合格率は公表されていません。受験料の最新情報は公式サイトの「受験料・価格」(https://mos.odyssey-com.co.jp/exam/examfee.html)でご確認ください。試験はマルチプロジェクト形式で、5個~10個のプロジェクトで構成されます。全国一斉試験の申込締切は試験日のおよそ1か月前ですが、回により異なるため公式サイトの試験日程でご確認ください。
まとめ:アクションクエリはテーブルのデータを直接操作するAccessの強力な機能
本記事のポイントをまとめます。
- アクションクエリとは:テーブルのデータを実際に変更(追加・更新・削除・作成)するクエリ。通常の選択クエリはデータを読み取るだけだが、アクションクエリは実際にテーブルに影響を与える
- 4種類の違い:追加クエリ(別テーブルへのレコード追加)・更新クエリ(フィールド値の書き換え)・削除クエリ(レコードの完全削除)・テーブル作成クエリ(クエリ結果を新テーブルとして保存)
- 共通の作成フロー:[作成]→[クエリデザイン]で選択クエリを作成し、[クエリの種類]グループで種類を変換する。実行前に必ず選択クエリとして対象レコードを確認するステップを省略しない
- 更新クエリの式入力:「レコードの更新」行にフィールド参照([フィールド名])・固定値・計算式([単価]*1.1など)を入力する。フィールド名は[ ]で囲み、テキスト値は” “で囲む
- 実行は不可逆:アクションクエリを実行するとテーブルのデータが変更され元に戻す操作はできない。事前のバックアップと対象レコードの確認が必須
- テーブル作成クエリの制約非引き継ぎ:テーブル作成クエリで作成した新テーブルには元テーブルの主キー・インデックスが引き継がれないため、必要に応じて作成後に設定する
- MOS試験対策:4種類の変換操作・追加クエリのフィールド対応付け・更新クエリの式入力・確認ダイアログへの対応をAccessの実データで繰り返し練習することが合格の近道
アクションクエリをマスターすると、AccessのデータベースをVBAのコードを使わずにデザインビューとクリック操作だけで大量のデータ操作を自動化できるようになります。まず更新クエリで「条件を指定して特定フィールドを一括更新する」操作から始め、次に追加クエリ・削除クエリ・テーブル作成クエリと順番に練習することをおすすめします。実務では常に「実行前に選択クエリで対象を確認する・事前にバックアップを取る」という習慣を徹底することで、アクションクエリを安全に活用できます。
PR
MOS試験シリーズの定番対策テキスト。試験の形式・採点の仕組み・出題パターンの把握に最適です。MOS Access試験と共通する試験運営の仕組みや受験の流れを理解するために活用できます。
PR
Microsoft Copilot for Microsoft 365活用大全
Microsoft 365全アプリのAI活用ノウハウを一冊に凝縮。Accessを含むOffice各ツールのデータ管理・自動化の考え方を広げたい方におすすめです。アクションクエリで整理・管理したデータをさらに活用するヒントが得られます。
