ODBCリンクテーブル作成 SQL Server版


AccessODBCリンクテーブルを作成するプログラム。
(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