#595 SQL Server上のテーブルやビューの一覧を取得する方法 VBA

SQL ServerとODBC等で接続しているようなMDB・ACCDB形式のAccessファイル、あるいはADP形式のAccessファイルにおいて、ADOの「OpenSchema」メソッドを使って、テーブルやビューの一覧を取得する方法です。

次のプログラム例では、「MYSQLSERVER」という名前のSQL Server上の「MYDB」というデータベースについてその処理を行っています。サーバー名・データベース名、あるいはそれにログインするためのユーザー名やパスワードについては、Connectionをオープンする際の文字列(Provider=SQLOLEDB;〜〜〜〜の部分)を適宜実際のものに書き換えてください。

Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset

cnn.Open "Provider=SQLOLEDB;Data Source=MYSQLSERVER;Initial Catalog=MYDB;" & _
            "User ID=*****;Password=*****;"

'テーブル一覧を出力
Set rst = cnn.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "TABLE"))
With rst
  Do Until .EOF
    Debug.Print !TABLE_NAME, !TABLE_TYPE
    .MoveNext
  Loop
  .Close: Set rst = Nothing
End With

'ビュー一覧を出力
Set rst = cnn.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "VIEW"))
With rst
  Do Until .EOF
    Debug.Print !TABLE_NAME, !TABLE_TYPE
    .MoveNext
  Loop
  .Close: Set rst = Nothing
End With

cnn.Close: Set cnn = Nothing


なおここでは、「OpenSchema」メソッドの引数として2つを指定しています。最初の「adSchemaTables」という定数が、データベースからテーブルとビューの情報を取得するためのものです。2つめの「Array(・・・・・」という配列の引数において、4つめに”TABLE”を指定することでテーブル情報だけが、”VIEW”を指定することでビュー情報だけが取得できます。・・・・2つめの引数はフィルタリングを行うためのもので、これを指定しない場合はシステムテーブルなどもすべてリストアップされます。

また、「OpenSchema」メソッドで受け取ったレコードセットにおいては、「TABLE_NAME」フィールドの値でテーブル/ビューの名前が、また「TABLE_TYPE」フィールドの値でそれがテーブルなのかビューなのかを取得することができます。
| Index | Prev | Next |



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