#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」フィールドの値でそれがテーブルなのかビューなのかを取得することができます。 |
|||
|
Copyright © T'sWare All rights reserved |