【連載】#13 Access のマクロの使い方とテーブルからのデータ削除方法を説明します

この記事では 東京都_新型コロナウイルス陽性患者発表詳細 に掲載の CSV データを題材に マクロ、削除クエリ の利用方法を紹介します。

しらかば堂

いつも記事を読んで頂きありがとうございます~
今日の調子はいかがですか?

マクロ、削除クエリの使い方

前回動画の最後は 次のような画面になっています。

今回は3つのテーマ検討の準備作業として作成した
 T0000_東京都コロナ発症状況_マスタ テーブル

を作成した後、不要となった
 130001_tokyo_covid19_patients テーブル

の レコード の一括削除処理を行う 削除クエリ 
 Q0000_作成_T0000_東京都コロナ発症状況_マスタ クエリ
の作成方法の紹介

そして前回作った
 Q0000_作成_T0000_東京都コロナ発症状況_マスタ クエリ

と今回作成する
 Q0010_削除_130001_tokyo_covid19_patients クエリ

を1つのシナリオとしてまとめて実行する
 M0000_作成_東京都コロナ発症状況_マスタ マクロ

への クエリ 登録方法をご紹介しますね。

まずは次の動画をご覧ください。
見づらいときは画面をフルスクリーンにすることをお勧めします。

どうですか?

いろいろなトピックを実行順に動作確認をしながら録画しているので
少しわかりにくいかもしれません。

ここで主要なポイントについて詳しく紹介しますね。

なぜマクロにクエリを登録するのか

しらかば堂

まずなぜ クエリ を マクロ に登録すると思いますか?

みなみ

みなみ わかんないっ!

しらかば堂

いいな~ この感じ~
久しぶり~(笑)

それは1つの目的に沿って マクロ に複数の クエリ をまとめることで、やりたいことを明確にし、内容を読みやすくするためです。

みなみ

え?
ちょっと何言ってんだかわかんないっ!

ちなみに今回自分がやりたいのは
 130001_tokyo_covid19_patients テーブル
から
 T0000_東京都コロナ発症状況_マスタ テーブル
を作成したあと

後始末として 削除クエリ を使って .accdb ファイルの
容量を小さくすることです。

また次回以降これにインポート処理、エクスポート処理 等も追加して

最終的には元の CSV ファイル
 130001_tokyo_covid19_patients.csv

のインポートから
T0000_東京都コロナ発症状況_マスタ テーブル.xlsx

へのエクスポートまでの前処理を一気に行う
 M0000_作成_東京都コロナ発症状況_マスタ マクロ
にしようと思っています。

みなみ

みなみ そんなこと聞かなきゃわかんないっ!

しらかば堂

全くです。ごめんなさい m(_ _)m

確かにこの

 M0000_作成_東京都コロナ発症状況_マスタ マクロ
に対して自分がやろうとしていることは自分が言わなければ分からないですよね。

ここではあなたが Access を使いこなそうと思ったときに
マクロ ってそういう風に使うとわかりやすいですよっ
とお伝えしたかったんです…-_-;

クエリ は 実行単位が小さく、1つの クエリ だけ見てもやりたいことに対する
その クエリ の位置づけがよくわかりませんが

それぞれの目的に沿った マクロ に小さな クエリ を実行順に並べてまとめることで、目的、可読性を高め全体の見通しを良くすることができるんです。

なぜテーブルのレコードを削除するのか

ところでなぜ削除
 130001_tokyo_covid19_patients テーブル

内の レコード の削除を行う必要があるのでしょうか?

それはこの .accdb ファイルのサイズを小さくしたいからです。

つまりこの 130001_tokyo_covid19_patients テーブル の レコード 削除前の
データシートビュー では

というように利用予定のない

  • ID
  • No
  • 全国地方公共団体コード
  • 都道府県名
  • 市区町村名
  • 発症_年月日

           :

といった フィールド とその レコード が 157125 件 ありました。

これをそのままにしておくと、この 利用予定のない  フィールド やその レコード をもつことで ディスク、メモリ 等の資源が無駄に消費され、PCの動きが遅くなったりするのでこれらを削除しこれを防ぎたいのです。

実際にこの効果を得るためには 最適化 という操作が必要です。
最適化は Access のメニューから
ファイル > オプション > 現在のデータベース
を順にクリックし開いた
Access のオプション設定 で 閉じるときに最適化する
にチェックをすることで有効となります。

結果的にこの 08_01.accdb の例では
CSV ファイルの インポート直後に 約24MbBytes あったサイズが、
この 130001_tokyo_covid19_patients テーブル の レコード 削除後
約6MbBytes になります。

削除クエリの使い方

それでは 削除クエリ の実際の使い方をご紹介しましょう。

この 削除クエリ は以下のように対象となる テーブル をクリック選択した後
作成 > クエリウィザード > 選択クエリウィザード OK
を順にクリックし

全ての フィールド を選択して

完了(F) をクリックし データシートビュー を表示した後

この データシートビュー のタブ部分でマウスの右ボタンを押し
コンテキストメニュー から デザインビュー(D) をクリックし

現れたこの 選択クエリのデザインビュー の何もない部分で

マウスの右ボタンを押して コンテキストメニュー を表示し
クエリの種類(U) > 削除(D)
を順にクリックすると 選択クエリのデザインビュー が次のようになるので

デザイングリッド部のフィールド ID の 抽出条件 部分に
 Is Not Null
と記入してからリボンエリアの 実行 ボタンと続く はい(Y) もクリックすると
 130001_tokyo_covid19_patients テーブル
の全ての レコード が削除されます。

この「Is Not Null」というのは、それが記載されている ID フィールド の
レコード 値が  Null(無) でなければ という条件式を表しています。

この ID フィールド はその レコード を一意的に特定する整数値を入れる
フィールド で絶対 レコード に何か記入されているので

もし レコード の ID フィールド に何か入っていたらというのは 全てのレコード に当てはまる条件式なんです。

ちょっとわかりにくいかもしれませんが今はお約束と思って下さい。

まとめ

いかがでしたか?
今回は クエリ 操作の中の 削除クエリ について紹介しました。

また それぞれの目的に沿った マクロ に小さな クエリ を、実行順に並べていくことで、可読性を高め全体の見通しをよくするという考え方についてご紹介しました。

さてこの記事全体の目標は

  • 今の状況から抜け出してもっと前向きな仕事に取り組みたい
  • さっさと仕事を切り上げて充実したアフターファイブを過ごしたい

でしたよね。

あなたの解決したい問題は何ですか?

次回はまた

で Access VBA の新しい窓を開きましょう。


Microsoft Access 関連教材は次のリンクからどうぞ。

Access VBA 関連教材の紹介