更新クエリ

 テーブルでのレコードの削除は手作業で行うだけでなく、更新クエリというものを用いて一括して実行することができます。
 具体的には更新の対象となるレコードの抽出条件と、更新後の値を式として設定することにより多数のレコードを一挙に更新することができます。

手順

f:id:accs2014:20181221154003p:plain:right:w500

 サンプルとなるのはこのようなテーブルです。
 「販売終了日」列の値が存在するレコードについて、商品名の先頭に「(販売終了)」という文字列を加え、単価を一律「999999」にします。

f:id:accs2014:20181221154000p:plain:right:w450

 まずは普通に選択クエリを作成し、値を更新しようとする「商品名」「単価」の2つの列と、更新の条件となる「販売終了」列を選択します。
 「販売終了」列については抽出条件として「Is Not Null」と設定します。

f:id:accs2014:20181221153956p:plain:right:w400

 ここでデザインタブから「更新」メニューをクリックします。

f:id:accs2014:20181221153953p:plain:right:w550

 そしてクエリを保存するとアイコンが変化します。
 さて、デザイングリッドに「レコードの更新」という行が現れているのがわかります。これは更新後の値を表す式を設定する行です。
 そこで「商品名」列については「"(販売終了)&[商品名]"」とし、「単価」列については「999999」とします。

f:id:accs2014:20181221153958p:plain:right:w400

 ここでデータシートビューを見てみます。
 「販売終了」列に値が存在している2つのレコードが選択されているのがわかりますが、更新後の値はどこにも表示されていません。
 テーブル作成クエリなどの場合はどういう結果になるか事前にデータシートビューで確認できますが、更新クエリではできません。更新すると元に戻すことができないので注意が必要です。

f:id:accs2014:20181221154100p:plain:right:w400

 設定は以上の通りですが、まだテーブルのレコードは更新はされていません。
 実際に削除するときは、メニューから「実行」をクリックします(クエリを開いていない状態で、左のナビゲーションウインドウのクエリのアイコンをダブルクリックするという方法もあります)。

f:id:accs2014:20181221154057p:plain:right:w400

 確認メッセージが出ますがので「はい」に進みます。

f:id:accs2014:20181221154054p:plain:right:w550

 実行後の商品テーブルの様子です。
 狙い通りに値が更新されているのがわかります。

備考

 文字列の一括変換(「(株)」→「株式会社」など)程度であればテーブルのメニューでも実行できますが、対象となるレコードの条件を設定したり、更新後の値を求めるのに演算や関数を用いる必要がある場合には更新クエリを用いるのが便利です。
 なお、主キーや重複を許さないインデックスが設定されている列を更新する場合、更新により値が重複してしまうとエラーになりますので注意が必要です。
 また、上記でも触れていますが実行後の結果を事前に確認することができないため、重要なデータに関してはバックアップを取っておくなどの対応が必要です。