ACCESSでテーブルを削除する前に確認すること

ACCESSでテーブルを削除する前に確認すること

ACCESSを使っているとだんだんと最初に作ったときから構成が変わってきてテーブルが不要になる場合もあると思います。

テーブルを削除する際、他のクエリ、フォーム、レポートへの影響がないかを確認しないと思わぬ不具合を生む可能性があります。
こうした他のオブジェクトへの影響を調べるには「オブジェクトの依存関係」を使用すると便利です。


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

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

ACCESSでテーブルやクエリを削除するリスク

ACCESSデータベースを作っていくと、どうしてもテーブルやクエリなどのオブジェクトが増えていきます。
使用して、修正して、また使用してを繰り返して長期間使っていくと、最初に作ったテーブルやクエリの中で使用しなくなるものも出てくるでしょう。

そういった不要なオブジェクトは、データ量の観点からもメンテナンスの簡易性の観点からも削除しておきたいものです。

しかし、よく確認せずにテーブルやクエリを削除してしまうと以下の問題が発生する可能性があります。

1.テーブルを元に作成していたクエリが使えなくなってしまう
2.テーブルやクエリを元に作成していたフォームが使えなくなってしまう
3.テーブルやクエリを元に作成していたレポートが使えなくなってしまう
4.テーブルやクエリを参照するプロシージャが使えなくなってしまう

私自身、オブジェクトを消してしまってから公開した経験は一度や二度ではありません。。。
こんなメッセージを何度見たことか。

オブジェクトの依存関係を使って影響範囲を調べる

そんな事故を防ぐためには、テーブルやクエリがどこで使われているか確認することが重要です。
しかし、オブジェクトが多ければ多いほど、手作業で確認するのは現実的ではありませんよね。

そういった時に便利なACCESSの機能がオブジェクトの依存関係です。

使い方はとても簡単です。
確認したいオブジェクトを選択した上で、ACCESSのメニューバーから「データベースツール」→「オブジェクトの依存関係」を選ぶだけです。

上記の例では、「TRN_年月」というテーブルの依存関係が右側に表示されています。
「このオブジェクトに依存するオブジェクト」と「このオブジェクトが依存するオブジェクト」を選択できます。

「このオブジェクトに依存するオブジェクト」というのが、このオブジェクト(今回でいう「TRN_年月」)を削除すると動作しなくなくオブジェクトを指しています。

テーブルやクエリなど、オブジェクトのレコードソースになるオブジェクトを削除したい場合は、こちらで影響範囲を確認できます。
今回でいえば、「TRN_年月」を削除すると「CAL03_1_月名寄せ」と「CAL04_1_年度名寄せ」が動作しなくなることが分かります。

この「オブジェクトの依存関係」を活用して、必要なオブジェクトを誤って削除しないように注意しましょう。
この機能で、先に挙げた

1.テーブルを元に作成していたクエリが使えなくなってしまう
2.テーブルやクエリを元に作成していたフォームが使えなくなってしまう
3.テーブルやクエリを元に作成していたレポートが使えなくなってしまう

を回避できます。

プロシージャへの影響を調べる

では、最後に残った、
4.テーブルやクエリを参照するプロシージャが使えなくなってしまう
というリスクにははどう対応すればよいでしょうか。

こちらは比較的単純な方法でリスクを回避できます。

まず、「ALT」+F11ボタンでVisual Basic Editorを立ち上げます。
そして検索ウィンドウを表示します。
検索ウィンドウはメニューバーの「編集」→「検索」かショートカットキーで「Ctrl」+「F」で表示できます。

そして、該当のオブジェクトの名称を検索するのです。

非常に単純な手法ですが、一つだけ注意点があります。
それは「対象」を「カレントプロジェクト」にすることです。

ACCESSのVBAには複数のモジュールがあることがほとんどです。
フォームやレポートなどのオブジェクトに紐づいたクラスオブジェクトと、汎用的な標準モジュールです。
それらを一括でまとめて検索するためには「カレントプロジェクト」を選択する必要があります。

さて、検索したオブジェクト名が見つかれば、下記のように表示されます。

これが分かれば、オブジェクトを削除するとこのプロシージャが動作しなくなることが事前にわかるのです。
検索にヒットした部分をVBAから削除したり、もしくは新しい処理に変更したりして対応しておきましょう。

これらの対応をすべて行ってからテーブルを削除すれば問題の発生を未然に防ぐことができます。

以上、ACCESSでテーブルを削除する前に確認することをご紹介しました。


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

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

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

サービス一覧

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です