Accessを使っていると「データをまとめて修正したい」と思う場面があります。例えば、商品価格を一斉に変更したいときや、注文のステータスを一括で変更したいときです。
こうしたときに便利なのが「更新クエリ」です。更新クエリを使えば、条件に合致したレコードの値を一度に変更することができます。
この記事では、更新クエリの基本的な仕組みと作成方法、実際の使用例や注意点を解説します。
更新クエリとは
更新クエリは、既存データの値を変更するためのアクションクエリです。
イメージ的には下図のような感じです。

時給
フィールドの値に一律50円
を加算したい場合、手作業では1レコードずつ修正していく必要がありますが、更新クエリを使えば、1レコードでも1000レコードでも、まとめて同時に値を変更することができます。
更新クエリの作成方法
では、ここから具体的な更新クエリの作成手順を解説します。本解説では以下のテーブルをサンプルとして使用します。

【①】新規クエリの作成
メニュー:「作成」→「クエリデザイン」を選択し、新規のクエリ デザインビューを開きます。

【②】データを更新する元のテーブル(クエリ)を選択
新規のデザインビューを開き、データを更新したいフィールドを含むテーブル(またはクエリ)を配置します。
テーブルを配置したら、フィールド一覧から更新対象のフィールドをデザインビュー下部にドラッグします。
今回はフィールドの更新を行います。

すべてのレコードを更新する場合は、更新対象フィールドだけを配置すれば十分です。
一方で、特定の条件に合致するレコードだけを更新したい場合は、更新条件を指定するためのフィールドも、あわせてデザインビューにドラッグします。

上図は、条件として社員名
フィールドを追加した例です。社員名フィールドの抽出条件に、Aさん
及びBさん
を指定することで、5名中2名分のレコードが更新されるパターンとなっています。
【③】クエリの種類を「更新」に切り替える
【②】までは選択クエリの状態です。ここから更新クエリに変更するには、クエリの種類を以下の手順で切り替える必要があります。
メニュー:「クエリデザイン」 → 「更新」

更新クエリに切り替えると、デザイングリッド上に「レコードの更新」欄が出現します。この部分に更新内容を指定します。
【④】更新対象フィールドと値を指定
前項で出現した「レコードの更新」欄に、更新内容を指定していきます。今回は時給に一律50円を加算する更新内容を設定します。

時給フィールドの「レコードの更新」欄に、[時給]+50
を書き込むことによって、Aさん、Bさんのレコードのみ、元々の時給に50円が加算されます。
【⑤】実行
それでは!アイコンをクリックして、更新クエリを実行してみましょう。
ダイアログが表示されますので「はい」をクリックします。


Aさん、Bさんの時給のみ、50円加算されました。
更新クエリの使用例
更新クエリの使用例パターンとして、2点ご紹介します。
他テーブルの値を使用して更新
前述「更新クエリの作成方法」では、計算した結果を更新しましたが、他のテーブルの値で上書きすることもできます。
以下は、時給の改訂を管理するテーブルから「時給」の値を引っ張ってきて、上書き更新するイメージです。

作り方はこちらです。

【解説】
2つのテーブルの主キー同士で結合したうえで、「レコードの更新」欄に[T_時給改訂テーブル].[時給]
と指定します。
これにより、T_時給改訂テーブルの時給フィールドの値が、T_給与支給額テーブルの時給フィールドに上書きされます。
フォーム上の値を参照してから更新
より実践的な事例として、フォームと連動した更新クエリの活用例もご紹介します。
以下はタスク管理を行うためのフォームです。タスクが完了したフラグをONにし、更新ボタンをクリックすることで、ステータスフィールドが完了
に変更され、完了日フィールドには完了日として当日日付
が反映する事例です。

更新クエリ(UQ_タスク完了更新)の内容は以下のとおりです。

上記の更新クエリを作成したうえで、更新ボタンに以下のコードを設定します。
Private Sub cmd更新_Click()
DoCmd.SetWarnings False
DoCmd.OpenQuery "Q_タスク完了更新" '作成した更新クエリ名
DoCmd.SetWarnings True
MsgBox "選択したタスクを完了にしました。"
End Sub

かなりシンプルな例ですが、作成した更新クエリをどのように使用するかイメージしてみてください。
注意点
これまでご説明したとおり、更新クエリは大量のデータを一括更新できるため大変便利です。一方で更新クエリを実行すると、データが直接書き換わるためが元に戻すことができず、誤操作した場合の影響は大きくなります。
特に更新クエリを作成して、初めて実行する場合は、事前にテーブルのバックアップと取る習慣をつけましょう。
まとめ
更新クエリを使えば、大量のデータを一括で修正できるため、業務の効率化に大きく役立ちます。
ただし、その分リスクも大きいため、必ずバックアップを取り、条件を確認した上で実行することが大切です。
更新クエリを正しく使いこなして、Accessをより便利に活用していきましょう!