Accessでテーブルのすべてのレコードを削除するには、すべてのレコードを選択して削除する方法もありますが、削除クエリを作成して簡単に削除することもできます。
アクションクエリの中の1つです。
すべてのレコードではなく抽出条件に合うレコードのみを削除することもできます。
また、2つのテーブル間で参照整合性を設定している場合は、主テーブルのレコードは削除できませんが、リレーションシップで[レコードの連鎖削除]を設定すると削除できるようになります。
参考ここでは[ドキュメントウィンドウオプション]で[ウィンドウを重ねて表示する]を選択しています。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。
-
[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い
Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...
すべてのレコードを選択して削除
テーブルのすべてのレコードを選択するには、テーブルをデータシートビューで表示して、左上端の四角の箇所をクリックします。すべてのレコードが選択できます。
そして、[ホーム]タブの[レコード]グループにある[削除]ボタンをクリックします。
または、右クリックしてショートカットメニューの[レコードの削除]をクリックします。
すべてのレコードを削除する[削除クエリ]の作成
すべてのレコードを削除するには、[削除クエリ]を作成して実行すると簡単に削除できます。
1回きりであれば手動でも構いませんが、たびたび行うようであれば削除クエリを作成しておくと便利です。
[作成]タブの[クエリ]グループにある[クエリデザイン]をクリックします。
[テーブルの表示]ウィンドウが表示されますので、目的のテーブルを選択して[OK]ボタンをクリックします。
参考バージョンによって異なると思いますが、[作成]タブの[クエリデザイン]をクリックすると、Microsoft 365のAccessとAccess 2021では[テーブルの追加]作業ウィンドウとして表示されます。
クエリデザインの「テーブルの追加」は作業ウィンドウに表示される
デザイングリッドにフィールドを登録
フィールドリストの[全フィールド](*)ボタンをダブルクリックします。以下のようになります。
デザイングリッドの[フィールド]にテーブル名と[*]が表示されますが、これは、すべてのフィールドという意味です。
このまま[デザイン]タブの[クエリの種類]にある[削除]ボタンをクリックします。
または、フィールドリストやデザイングリッドの以外の箇所で右クリックして、ショートカットメニューから[クエリの種類]-[削除]をクリックします。
以下のように[レコードの削除]という行が追加され、[From]という文字が表示されています。
削除クエリの実行
[実行]ボタンをクリックすると、テーブル[T_売上]のすべてのレコードが削除されます。
削除クエリを実行すると、元に戻せませんので気をつけてくださいね。
参考データマクロで削除レコードを自動で保存することができます。
-
削除後のレコードを自動で指定テーブルへ保存するデータマクロ
Accessには、テーブルで行った削除や追加、更新などの実行時に、設定した処理を自動で実行してくれる[データマクロ]というのがあります。 こ ...
名前を付けて保存
削除クエリに名前を付けて保存します。
キーボードから[F12]キーを押すと、[名前を付けて保存]ダイアログボックスが表示されますので、任意の名前を付けます。
参考クエリを[閉じる]ボタンで閉じると[クエリの変更を保存しますか?]のメッセージが表示されるので[はい]をクリックしても、[名前を付けて保存]ウィンドウが表示されます。
保存した削除クエリは、ナビゲーションウィンドウに以下のようなアイコンで表示されます。
ナビゲーションのオブジェクトの表示形式は、[アイコン]にしています。
この削除クエリのアイコンをダブルクリックすると実行できます。
参考作成したクエリをコマンドボタンをクリックして実行するための設定は、以下の記事で解説しています。
-
作成したクエリをコマンドボタンに登録して実行する
Accessでクエリを作成した後、コマンドボタンをクリックしてクエリを実行するための方法です。 コマンドボタンウィザードを使用する方法と、マ ...
削除クエリ実行時のメッセージウィンドウ
アイコンをダブルクリックして実行するときは、必ずメッセージウィンドウが2回表示されます。
削除クエリを実行すると、テーブルのデータが変更されます。
○件のレコードが指定したテーブルから削除されます。
上記のメッセージウィンドウはアクションクエリでは必ず表示されます。
表示させたくなければ、以下の記事を参考に設定してください。
-
アクションクエリ実行時の確認メッセージを非表示にする
Accesでアクションクエリを実行すると、既定では確認メッセージが表示されます。 このメッセージを非表示にする方法です。 以下の画像は、追加 ...
条件に合うレコードのみを削除するには
すべてのレコードではなく抽出条件に合うレコードのみを削除することもできます。
抽出したいフィールドをデザイングリッドに追加して、抽出条件に条件を追記します。
ここでは、売上年月日が[2010/07/03]より前のレコードを抽出して削除します。
削除クエリを実行する前に、[データシートビュー]に切り替えてクエリの結果を確認できます。
データシートビューに切り替えると、削除するレコードが表示されます。ここでは、10件のレコードが抽出されています。
デザインビューに切り替えて、[実行]ボタンをクリックして削除クエリを実行すると、[2010/07/03]より前のレコードのみが削除されます。
参照整合性と削除クエリ
2つのテーブル間で参照整合性を設定している場合は、主テーブルのレコードは削除できません。削除クエリを作成しても実行できません。
リレーションシップで[レコードの連鎖削除]を設定すると削除できるようになります。
[レコードの連作削除]がオフの場合
[データベースツール]タブの[リレーションシップ]グループの[リレーションシップ]をクリックします。
例えば、以下のようにテーブル[T_商品名]の[ID]とテーブル[T_売上]の[商品名]の間で参照整合性の設定がされています。
上記のままテーブル[T_商品名]の[商品名]フィールドを追加して、抽出条件に[モンブラン]を指定します。
メッセージウィンドウが表示されますので、[はい]をクリックします。
1件のレコードが指定したテーブルから削除されます。
次のメッセージは[削除クエリでレコードを削除できません。]と表示されています。[はい]をクリックしてもレコードは削除できません。
1件のレコードでキー違反、0件のレコードでロック違反が発生したため、削除クエリでレコードを削除できません。
参照整合性で[レコードの連鎖削除]をオンに設定
リレーションシップで[レコードの連鎖削除]のチェックボックスをオンにすると削除できるようになります。
ここのチェックボックスをオンにすると、2つのテーブルからレコードを削除できます。
参考リレーションシップと参照整合性については、以下の記事でも解説しています。
-
リレーションシップの作成と参照整合性の設定
Accessでは、複数のテーブルがあって、そのテーブル間の共通フィールドを関連付けることができます。この関連付けのことを[リレーションシップ ...
-
リレーションシップの[フィールドの連鎖更新]と[レコードの連鎖削除]
Accessでは、参照整合性を設定することで、データの入力や更新、削除が制限されてデータの整合性を保つことができます。 リレーションシップの ...
データマクロで削除レコードを自動で保存することができます。
-
削除後のレコードを自動で指定テーブルへ保存するデータマクロ
Accessには、テーブルで行った削除や追加、更新などの実行時に、設定した処理を自動で実行してくれる[データマクロ]というのがあります。 こ ...
アクションクエリについて
アクションクエリとは、テーブルの中のデータを変更、削除、追加、新規作成するクエリのことです。テーブルに対して一括で処理を行うことができます。アクションクエリには、[テーブルの作成クエリ][追加クエリ][更新クエリ][削除クエリ]の4つの種類があります。
[クエリツール]-[デザイン]タブの[クエリの種類]ある4つのボタンを使って作成します。
- テーブルの作成
- 追加
- 更新
- 削除
作成後にナビゲーションウィンドウに表示されるアイコンは以下のようなものです。通常のクエリのアイコンとは異なることが分かると思います。
アイコン | アクションクエリの種類 | 内容(ポップヒントより) |
テーブルの作成 | クエリを使用してデータベースのレコードを選択し、新しいテーブルとして保存します。 | |
追加クエリ | クエリを使用してレコードを既存のテーブルに追加します。 | |
更新クエリ | クエリを使用して既存のテーブルのデータを更新します。 | |
削除クエリ | クエリを使用して、データが条件と一致する場合に既存のテーブルから情報を削除します。 |
以下は主なアクションクエリを使った記事です。
-
グループ化で重複レコードを削除したテーブルを作成
Accessで、1つのテーブルで重複したレコードを削除してマスターテーブルを作成する方法です。 クエリでグループ化を設定して重複レコードがな ...
-
追加クエリの作成方法(追加先テーブルのフィールドへ特定の値を表示)
1つのテーブルに別のテーブルのレコードを追加する方法です。 3個テーブルがあって、各テーブルのフィールド名は同じです。 ここでは例として、テ ...
-
レコードの差分をテーブルに追加(追加クエリの作成)
Accessで2つのテーブルの不一致レコードを抽出した後、その差分レコードをテーブルへ追加する方法です。 参考ここでは[ドキュメントウィンド ...
-
追加クエリを使ったオートナンバー型フィールドの番号の振り直し
オートナンバー型のあるテーブルでレコードを削除すると、欠番が出てしまいます。 Accessにとっては問題はなくても、見た目としては1から綺麗 ...
-
別のテーブルや別フィールドのデータをコピーする更新クエリ
Accessで、別のテーブルの値をコピーする方法です。 [商品価格A]と[商品価格B]という2つのテーブルがあります。 参考ここでは[ドキュ ...
-
帳票フォームから単票を開いたらチェックを付ける(リセット方法も)
Accessで帳票フォームから、ボタンをクリックして同じIDの単票を開くように作成することはよくあります。フィールドが多い場合は、修正は横に ...