とあるプログラマーの覚書

Access編:テーブル、マクロ、クエリやモジュールがどこで使われているかどうか調べる方法

本日は、珍しくAccessの話題です。

私は約10年弱、ソフトウェア開発系の仕事をしています。
最初は携帯電話の組込み、次はWebアプリやフォームアプリの開発等、色々やってきました。
そんな中、最近始めて「MS Access」を使ったシステムに携わる事となりました。

元々は他社が作ったシステムなのですが、その会社がサポートから手を引くそうで、その後継としてウチが選ばれたという感じです。

私は、開発職を始めてから、既存システムの分析みたいな事はしょっちゅうやってきました。
要は、仕様書的な資料が無いプログラムを、ひたすら追跡していくという作業ですね。関数が何やっているのか、どこから呼ばれているのかはひたすらGrepで検索していくという地道な作業です。嫌な作業なんですが、嫌よ嫌よも好きの内ってな具合で、気付けばハマっています。

さて、Accessでも同じように、「この画面はどこから呼び出されるのか?」みたいな事を調べたいと思ってmdbファイルを開いてみたのですが、Accessって一体何がどうなってるの!?
めちゃくちゃ追跡しにくいです。こんなモン、何故採用したんだよ!
作るときはいいかもしれないけど、作った人以外がメンテナンスするのって大変なんじゃないでしょうか。

Accessは、以下のような種類のオブジェクトで構成されています。
フォーム:画面の事です。
レポート:帳票の事です。
テーブル:データを格納するテーブルです。
クエリ:SQLの事です。
マクロ:VBAのコードではなく、まるで日本語で記述する処理の流れのようなものです。
モジュール:VBAのコード

上記の内、「モジュール」は、私のようにプログラムを見慣れているものにとっては、分析において何も問題はないのですが、それ以外が。。。
モジュール内のとある関数を呼び出しているところを調べようにも、全モジュール内から呼ばれているところは簡単に検索できますが、フォームのイベントハンドラとして登録されていたり、マクロから呼び出されている場合は、簡単に検索出来ません。

で、1つの手段ですが、Accessの機能を使います。
下は、Access2010での画面の一部です。
Access 2010 サンプル画面
Accessのメニューの「データベース ツール」⇒「データベース構造の解析」というのがあります。
これを選択すると、以下のような画面になります。
Access2010 データベース構造の解析
「すべてのオブジェクト」を選択して、「すべて選択」を選択してOKを押すと、解析データが出力されます。
解析データは、テキストファイル等で保存が出来ますので、このファイルから、呼び出されているか確かめたい関数名とかフォーム名やマクロ名等を検索してやると、使われているかどうかの目途が付きます。

大容量のmdbファイルだと、解析データの出力に時間が掛かるので、「すべてのオブジェクト」を選択せずに、「テーブル」「クエリ」「フォーム」「レポート」「マクロ」「モジュール」毎に解析データを出力するというのも有りですね。
(「モジュール」はVisual Basicのエディタ画面で検索出来るので不要ですが。)

今回は以上です。


スポンサーリンク

URL :
TRACKBACK URL :

Leave a Reply

*
*
* (公開されません)

*

Return Top