ACCESS テーブル更新クエリの使い方

テーブル更新クエリの使い方

ACCESSのテーブルにあるレコードの値を、一括変換しなければいけない場合、手動で変換することも可能ですがミスを招きがちです。
そんな時はテーブル更新クエリを使用しましょう。

更新クエリを使えば一定の条件に合致したレコードを一括で更新することが可能ですので、作業が効率化でき、ミスも減らせます。
今回は、テーブル更新クエリの使い方についてご紹介します。


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

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

更新クエリとは

皆さんはACCESSのテーブルの値を一括で置換する際にどのような方法をとっているでしょうか?

ACCESSの機能で一括支援を準備するのが更新クエリです。
更新クエリはアクションクエリの一種で、あらかじめ設定した内容でテーブルの内容を更新することが可能です。

多くのレコードの値を一括置換する際は、手動での更新に比べてミスが少なく効率的に行うことが可能です。
GUIで操作可能なのでVBAはわからない、という方でも簡単に使いこなすことができます。

サンプルテーブル

今回は更新クエリを試すために、サンプルとして以下のテーブルを用意しました。
売上情報が格納されたテーブルです。

こちらのテーブルの顧客ID:13のレコードの消費税率を一括で8%に更新し、それに伴って消費税と伝票合計を更新する方法を考えてみます。

更新クエリの作成

それでは、さっそく更新クエリを作成しましょう。

メニューから「作成」→「クエリデザイン」で作成します。

今回は「TRN_売上」というテーブルの更新クエリを作成しますので、クエリの上段(フィールドリスト)に「TRN_売上」を配置し、そこからドラッグアンドドロップでクエリの下段(デザイングリッド)に必要なフィールドを配置します。

今回は顧客IDが13のレコードのみを対象としたいので、顧客IDの抽出条件欄に13と記載しています。

デザインビューでクエリを作成すると、最初はレコードを抽出するための選択クエリになります。
そこから、メニューで「デザイン」からクエリの種類を「更新」にすることで更新クエリに変更できます。

そして更新クエリで値の更新内容を設定してきます。

更新クエリに変更すると、下段(デザイングリッド)にレコードの更新という行が追加されます。
更新クエリを実行するとこの行に記載した内容へ対象のレコードの値更新されます。

今回設定した内容は以下の通りです。

フィールド消費税率消費税伝票合計
レコードの更新8[小計]*[消費税率]/100[小計]+[消費税]
説明消費税率を8%にする新しい消費税率を元に消費税額を再計算する新しい消費税額を小計と足して合計を再計算する

これで更新クエリは完成です。

クエリを保存しておきましょう。

更新クエリの実行

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

メニューから実行を押すことで、更新クエリが実行されます。

レコードを更新する前の確認メッセージが表示されますので、「はい」を押します。

更新クエリが実行されました。
実行結果をテーブルを開いてみてみましょう。

顧客ID:13のレコードの消費税率が8%に更新されていることが分かると思います。

更新クエリ実行上の注意

しかし、上記の結果をよく見てください。

確かに消費税率は更新されていますが、消費税、伝票合計は更新されず、前の値のままになっています。

これは、更新クエリで消費税率を更新したのと同じタイミングで消費税、伝票合計を再計算させているため、更新がされなかったということです。一度更新クエリを実行したことで消費税率は変わっていますので、この状態で再度更新クエリを実行するとこうなります。

今度は消費税も更新できましたね。

しかし、伝票合計はまだ変更できていません。
これは先ほどと同じ理由で、消費税を元に伝票合計を計算しなおしているためです。

そのため、もう一度更新クエリを実行すると最終結果が得られます。

これでようやく、消費税率、消費税、伝票合計の全てが更新できました。

このように、更新クエリで変更した値を元に、別のフィールドの値を計算して更新させる場合は更新クエリを一度実行しただけでは値の更新ができませんのでご注意ください。

更新クエリでできないこと

このように、値を一括で更新するためには便利な更新クエリですが、できないことがあります。

それは、レコードごとに条件に応じて更新する値を変更することです。
更新クエリは抽出したレコードに対して一括で同じ条件での更新を行いますので、レコードごとに値を変えることができないのです。

細かく条件に応じて更新する値を変更する場合には、VBAでADOを使って更新することが可能です。

ご興味のある方は下記の記事をご覧ください。

レコードを更新する方法

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


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

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

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

サービス一覧

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