AccessでODBCリンクテーブルを作成するプログラム。
(SQL Server2008用)
モジュールを作って以下のコードを実行するとよい。
※使用する際はDB接続情報、ODBC情報、ユーザ名の箇所を適切な値にかきかえること。(★の箇所)
Option Compare Database ' ' リンクテーブル作成メイン ' Public Sub main() '定数の定義 Const adOpenStatic = 3 Const adLockOptimistic = 3 Const adUseClient = 3 Set objConn = CreateObject("ADODB.Connection") Set objRec = CreateObject("ADODB.Recordset") Dim sSql As String '★DB接続情報の記述 objConn.Open "Provider=SQLOLEDB.1;Password=パスワード;Persist Security Info=True;User ID=ユーザ;Initial Catalog=データベース;Data Source=サーバ名(インスタンス名)" objRec.CursorLocation = adUseClient 'SQL Server 2008のシステムテーブルよりテーブル一覧を取得 sSql = "" sSql = sSql & " SELECT *" sSql = sSql & " FROM sys.tables" ' sSql = sSql & " WHERE name LIKE 'S%'" '←対象テーブルを絞り込むことも可 sSql = sSql & " ORDER BY name" objRec.Open sSql, objConn, adOpenStatic, adLockOptimistic Do Until objRec.EOF = True 'リンクテーブル作成 Call createObbcLinkTable(objRec("name").Value) objRec.MoveNext Loop objRec.Close objConn.Close MsgBox "リンクテーブルの作成が完了しました" End Sub ' ' 引数で受け取ったテーブル名のリンクテーブルを作成する ' Public Sub createObbcLinkTable(ByVal inTableName As String) Dim tbl As DAO.TableDef 'テーブルオブジェクト作成 Set tbl = CurrentDb.CreateTableDef(inTableName) '★ODBC接続文字列設定 tbl.Connect = "ODBC;DSN=ODBC名;UID=ユーザID;PWD=パスワード;" '★リンクするテーブルを指定(先頭にユーザ名を付与したほうがよい) tbl.SourceTableName = "dbo." & inTableName 'パスワードを保存 tbl.Attributes = dbAttachSavePWD 'リンク作成 CurrentDb.TableDefs.Append tbl End Sub
動作確認環境:Windows XP sp2,Access2003,SQL Server2008 Enterprise