Access削除クエリでレコードを削除する方法

 

アクセス担当のまみです。

 

クエリって色々なデータを抽出してくれたり、一定の法則に基づいてデータを更新してくれたり、本当に色々と活躍してくれます。

抽出条件に合うレコードの削除や、全レコードの削除もクエリでできちゃいます。

抽出条件が同じなら、一度クエリを作成しておけば、実行するだけで削除してくれます。

データを削除すると元に戻せないのでバックアップは取っておいてくださいね。

 

テーブルの準備

 

(あいちゃん)
削除クエリは実行したら元に戻せないのでバックアップを取っておいてね!

 

(はてな君)
わかった!

 

(あいちゃん)
じゃあ削除クエリの説明に入る前にテーブルを準備しよう!

 

使用するテーブル

「T_納品管理表」

 

ここでは「T_納品管理表」を使用しますが、同じテーブルじゃなくても大丈夫なので、お手元にデータがあれば準備してください。

データの削除後にも、同じデータを使用するので、バックアップを取っておいてくださいね。

 

Accessテーブルのバックアップをする方法

2018年11月18日

 

抽出条件に合うレコードを削除する削除クエリの作成

 

所属が営業部のレコードを削除する削除クエリを作成してみましょう。

 

リボンの①「作成」タブから「クエリデザイン」を選択し、「T_納品管理表」を追加します。

 

フィールドに③「所属」を選んで、抽出条件に「営業部」を入力して、リボンの④「削除」を選択します。

 

(あいちゃん)
これで削除クエリのできあがりだよ!

 

(はてな君)
えっもう終わったの?わりと簡単だったかも!?

 

(あいちゃん)
データシートビューで確認してみてね。

 

クエリの結果

 

(はてな君)
営業部のデータは4件。この4件が削除されるんだね。

 

(あいちゃん)
そう。何度も言うようだけど、クエリを実行したらエクセルのように元に戻すって機能がないので確認は大事だよ!まぁバックアップで戻すことはできるけどね。

 

デザインビューに切り替えて、リボンの「!実行」を左クリックしてみましょう。

 

営業部のデータが削除されました。

 

クエリは「Q_抽出条件で削除」と名前をつけておきましょう。

 

⑤×を左クリックして⑥「はい」を左クリックします。

 

 

 

全レコードを削除する削除クエリの作成

 

(あいちゃん)
じゃあ次は全レコードを削除する削除クエリを作成してみよう!

 

リボンの「作成」タブから「クエリデザイン」を選択し、「T_納品管理表」を追加します。

 

フィールドに「*」(すべて)を選択してリボンの「削除」を選択すれば全レコードを削除する削除クエリのできあがりです。

 

データシートビューで確認してみましょう。

クエリの結果

 

(はてな君)
さっき営業部を削除したから残りのデータは5件になってるよ。この残りの5件全部削除するんだね。

 

(あいちゃん)
そう!じゃあデザインビューに切り替えて実行してみてね。

 

 

(はてな君)
な~にこれ!?

 

(あいちゃん)
テーブルを開くタイミングの問題かな?時々こんな表示を見るんだけど、一度閉じて開きなおせば大丈夫だから。

 

 

(はてな君)
あ~ホントだぁ。ビックリした。壊れたのかと思った。

 

(あいちゃん)
大丈夫壊れてないよ。クエリは「Q_全レコード削除」って名前を付けておこうね。

 

 

 

保存した削除クエリの実行

 

保存した削除クエリをダブルクリックすると、即実行されます。

 

(はてな君)
それって、データの確認しないまま削除されるってこと?

 

(あいちゃん)
そういうこと!だから削除クエリを右クリックしてデザインビューで開くといいよ!

 

(はてな君)
わかった!そうする~。

 

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

 

作成した削除クエリをVBAで実行することができます。

 

(はてな君)
それってフォームにボタンを配置してコードを書けばいいってこと?

 

(あいちゃん)
そういうこと!でもその前にテーブルのデータを削除しちゃっているので、バックアップから戻しておいてね。

 

リボンの①「作成」タブから②「フォームデザイン」を選択し、ボタンを1つ配置します。

 

名前を「btnデータ削除」標題は「データ削除」にしておきましょう。

 

③「btnデータ削除」を選択した状態で、プロパティーシートの④「イベント」タブからクリック時に「イベントプロシージャ」を選択してコードの画面を表示します。

 

(あいちゃん)
クエリ名を指定するだけだから両方やらなくてもどっちかにしようと思うんだけど「Q_抽出条件で削除」と「Q_全レコード削除」どっちにする?

 

(はてな君)
じゃぁ「Q_全レコード削除」で!

 

「Private Sub btnデータ削除_Click()」と「End Sub」の間に下記のコードを追加しましょう。

 

 

 

コードをコピーされたい場合は下記の記事を参考にしてください。

 

関連記事
 
 
 
 

DoCmd.OpenQuery “クエリ名“, acNormal, acEdit

 

ってコードでクエリが実行されます。クエリ名に使用したいクエリ名を入れて使ってくださいね。

 

(あいちゃん)
フォームビューで確認してみてね!

 

 

(はてな君)
へぇ~。ボタンを1つで削除できるようになったよ。

 

【Access】VBAテーブルのデータを全部削除する方法

2018年12月2日

 

まとめ

 

削除クエリってデータを一括で削除してくれてとっても便利ですね。

 

削除クエリを実行すると元に戻せないので、くれぐれもバックアップを取ることを忘れないでくださいね!