ACCESS 更新クエリの使い方(他のテーブルを用いた更新含む)

ACCESSに入力したデータを一括で更新したい時があると思います。

そんな時に一つずつデータを直したり、置換をかけていては時間もかかりますし間違いの元です。


この記事では、データの一括更新時に役立つ更新クエリの使い方についてご説明します。
特定のテーブルの値を元に、他のテーブルの値を更新する方法もご説明しますので参考にしてみてください。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSの基本的な使い方をご紹介していきます。

更新クエリとは

更新クエリとはACCESSのクエリの種類の一つです。

最もよく使われる選択クエリがレコードの抽出に使用されるのに対して、更新クエリはレコードの値の更新を行うことができます。

Excelの置換に近い機能ですが、Excelよりも抽出条件や更新条件を詳細に設定することが可能です。
また、更新前に対象レコードの確認ができるため、誤って更新してしまうことを避けることができます。

Excelの一括置換だと間違いが怖い、という場合にはACCESSの更新クエリが便利ですね。

ACCESSでは大量のレコードを扱うことが多いと思いますので、一括で更新を行いたい場合はテーブルを手動操作して更新するよりも、更新クエリの使用をお勧めします。

更新クエリの作り方

それでは実際に更新クエリを作成しましょう。

今回は下記のサンプルデータを準備しました。
商品マスターデータを入れている、商品テーブルです。

まず、クエリをデザインビューで作成します。

ACCESSのメニューから「作成」→「クエリデザイン」を選択しましょう。

すると、どのテーブルを対象にクエリを作成するか聞かれます。
今回は商品テーブルを選択します。

クエリ画面の上段(フィールドリスト)に商品テーブルが追加された状態になります。

ここで、上段の商品テーブルの全てのフィールドを選択して下段(デザイングリッド)にドラッグアンドドロップし、クエリの表示項目に設定しましょう。

このままでは選択クエリになっていますので、上段のメニューから更新クエリに変更します。

クエリの種類から「更新」を選択してください。

すると画面も少し変わります。

フィールド、テーブルの次の行が「レコードの更新」に変わりました。

ここに更新後の値を入れることができます。

これで、更新クエリの基本的な作成はできました。

更新クエリの使い方

では、更新クエリの使い方を見ていきましょう。

今回は、

1.テキストの更新
2.数値の更新
3.他のテーブルの値を用いた更新

の3パターンをご説明します。

テキストの更新

最初に、商品名の「グラフ追加オプション」という文字を「マニュアル作成オプション」に置き換えましょう。

先ほど作成したクエリで商品名列のレコードの更新行に「マニュアル作成オプション」と入力し、抽出条件行に「グラフ追加オプション」と入力します。

これは、全レコードの中から商品名がグラフ追加オプションであるレコードを対象に、商品名をマニュアル作成オプションに更新しないさい、という設定です。

ここで一度、左上の表示ボタンを押すと更新対象のレコードを確認することができます。
今回の更新対象、つまり商品名がグラフ追加オプションになっているのは1レコードのみですね。

では、画面左上の「実行」ボタンを押してみましょう。

確認メッセージが表示されますので、はい、を選択します。
これで更新クエリが実行されました。

再度、商品テーブルを見てみましょう。

このように、無事に更新されていますね。
これが更新クエリの基本的な使い方です。

数値の更新

次に数値を更新しましょう。

テキストの更新では1レコードのみの更新を行いましたが、実際には複数のレコードの値を一括で更新する際に更新クエリを利用することが多いです。

今回は商品テーブルの単価を一律10%高くします。

それでは、更新クエリの設定方法を見てみましょう。

単価フィールドのレコードの更新欄に[単価]*1.1と記載します。

このように、レコードの更新には固定値だけではなく変数や計算式を入れることも可能です。

今回は抽出条件を設定していませんので、全レコード一律に単価を1.1倍する設定です。

これでクエリを実行して結果を見てみましょう。

無事に、単価が1.1倍されています。

このように、複数のレコードに対して計算式で一括更新を行えるのも更新クエリの特徴です。

他のテーブルの値を用いた更新

ここまで、2つの更新クエリの使い方をご説明しました。
最後は上級編、他のテーブルの値を用いた更新です。

今までの更新は、どのレコードに対しても一律で同じ更新を行いました。

特定のテキストに変換したり、一定の計算式を適用したり。

しかし、実務ではレコードに応じて更新内容を変えたい場合があります。

例えば、商品の価格見直しを行って、商品単価を商品毎に変えたい場合などです。
実際に先ほどの例で、商品価格を商品毎に変えてみましょう。

まず、商品毎の更新後価格を設定したテーブルを別に作成します。
今回は商品更新テーブルとして作成しました。

この際、元の商品テーブルとリレーションが取れるように商品ID等のキー値を共通にしておく必要があります。

そして、更新クエリに作成した商品更新テーブルを追加し、キー値(今回は商品ID)でリレーションを設定します。

下段には、単価フィールドのレコードの更新に


 [商品更新]![更新後単価]

と設定します。
商品更新テーブルの更新後単価を参照する、という意味です。

これでクエリは完成です。
早速実行してみましょう。

狙い通りに単価を更新することができました。

商品ごとに指定した単価に変わっていることが確認できると思います。

更新クエリはとっつきにくい印象があるかもしれませんが、対象データの一括更新を手動で行うのは誤操作のリスクが伴います。
更新クエリを使って、効率的にミスなく更新作業を行いましょう。

以上、更新クエリの使い方をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス紹介

最後までお読みいただき、ありがとうございました。