#126 クエリーを使ってオブジェクト一覧を取り出す方法 データベース、クエリー

このホームページでは、Access Study のページなどで、データベースにあるテーブルやフォームの一覧をVBAを使って取得する方法を紹介しています。しかし、VBAを使わずにそれらのオブジェクト一覧を取り出す方法もあります。

それは、"システムテーブル"である「MSysObjects」を使う方法です(もしかしたら危ない方法かもしれません)。

このテーブルにはデータベース内のさまざまなオブジェクト情報が格納されています。もちろん勝手に編集することはできませんが、テーブルの内容を見たり、クエリーを使って必要な情報だけを抽出することができます。

ここでは、クエリーを使って、必要なオブジェクトの種類(テーブルやフォーム)のオブジェクト名だけを一覧表示させる例をご紹介します。
  1. まず、システムテーブルをデータベースウィンドウに表示させるために、オプション設定を変更します。「オプション」ダイアログの[表示]タブにある[システム オブジェクト]にチェックを付けて[OK]ボタンを押します。
    オプション画面


  2. データベースウィンドウデータベースウィンドウの"テーブル"に、「MSysObjects」という名前のテーブルが表示されていることを確認して、それを元に選択クエリーを作成します。


  3. クエリーのデザイン選択クエリーでは、MSysObjectsテーブルの「Name」フィールド「Type」フィールドだけを選択します。Nameフィールドにはオブジェクトの名前が、またTypeフィールドにはオブジェクトの種類を表す数値が格納されています。例として今回はフォームだけを抽出してみます。Typeフィールドの抽出条件を「-32768」とします。このフィールドは一覧上は必要ないので、[表示]のチェックを外しておきます。


  4. クエリーの実行画面クエリーをデータシートビューで開きます。



フォーム以外のオブジェクトへの応用は、通常のクエリーのデザイン操作でできますので、いろいろ抽出条件を変えて試してみてください。なお、基本的な各オブジェクトの「Type」値は次のようになっています。
テーブル 1
クエリー 5
フォーム -32768
レポート -32764
モジュール -32761
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved