ACCESS 削除クエリの使い方

削除クエリの使い方

ACCESSにはクエリという便利な機能があります。

クエリにはいくつかの種類があり、レコードを抽出する選択クエリが最も一般的ですが、それ以外にテーブルの内容を更新するアクションクエリというものも存在します。

今回はアクションクエリの1つであり、テーブルのレコードをすべて削除する削除クエリについてご紹介します。


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

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

削除クエリとは

削除クエリとは、指定したテーブルのレコードを削除するクエリです。
作成後に実行することでテーブルの内容を変更しますので、アクションクエリの一種です。

テーブルのすべてのレコードを削除するだけでなく、一定の条件で抽出したレコードだけを削除することも可能です。

削除クエリの作り方

では、削除クエリの作り方を見ていきましょう。

今回は「TRN_削除」というテーブルを追加しました。
TRN_削除の内容は以下のようになっています。

まずはクエリデザインで空のクエリを作成します。

クエリデザイン

テーブルの追加から、削除対象のテーブルをクエリの上段(フィールドリスト)に追加します。

テーブルの全フィールドを表す「*」のフィールドを、クエリの下段(デザイングリッド)にドラッグアンドドロップします。

ACCESSの上段のメニューから「クエリデザイン」で「削除」を選択します。
これによってクエリが削除クエリに変わります。

デザイングリッドの表示は下記のように変更されます。

これで削除クエリは完成です。

削除クエリの実行

では、作成した削除クエリを実行してみましょう。
作成した削除クエリをナビゲーションウィンドウでダブルクリックすることで実行可能です。

実行すると以下のメッセージが表示されます。

「はい」を選択すると、次は削除するレコード数が表示されます。

ここで「はい」を選択することで削除が実行されます。

TRN_削除テーブルを見てみると、レコードがなくなっていることが分かります。

一部のレコードだけを削除する方法

先ほどはテーブルのすべてのレコードを削除しましたが、一部のレコードだけを選択して削除することも可能です。
例えば、消費税率が8%のレコードだけを削除する場合は、削除クエリの設定は以下になります。

デザイングリッドに「消費税率」フィールドを持ってきたうえで、抽出条件欄に「8」と記入します。
この抽出条件の書き方は選択クエリと同一です。

これで、消費税率が8%のレコードだけを抽出して削除することができます。
実際にクエリを実行してみましょう。

上記のように消費税率が8%のレコードだけを削除できました。

VBAで削除クエリを実行する方法

作成した削除クエリは、手動で実行する以外にVBAで実行することも可能です。
例えば先ほど作成したtest_削除クエリを実行する場合は以下のように記述します。


 DoCmd.OpenQuery "test_削除"
 

DoCmd.OpenQueryメソッドを利用することでクエリの実行が可能です。
しかし、これだけだと実行時に以下のメッセージが出てしまいます。

これらのメッセージは手動で処理する際は確認のために良いのですが、VBAで自動処理をする際は、ユーザーにとって分かりにくいものになってしまいます。
そのため、こうしたアラートメッセージを出さないようにしておくことが多いのです。

上記のプロシージャを一部修正して以下のようにします。


 DoCmd.SetWarnings False
 DoCmd.OpenQuery "test_削除"
 DoCmd.SetWarnings True
 

前後にDoCmd.Serwarningsを入れました。
これはアラートメッセージの表示をON/OFFするメソッドです。

先にFalseでメッセージを出ないようにしてから削除クエリを実行し、実行が終わったらTrueで元の状態に戻します。
削除クエリに限らず、追加クエリや更新クエリなど、VBAからアクションクエリ(テーブルの内容を更新するクエリ)を実行する際にはDoCmd.SetWarningsを使うことが多いので覚えておくと便利でしょう。

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


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

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

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

サービス一覧

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