#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'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。
スタンドアロンからSQL Server対応まで、オーダーメイドのシステムを短納期・安価でお届けします
 

Copyright © T'sWare All rights reserved