ODBCリンクテーブル作成


AccessODBCリンクテーブルを作成するプログラム。



モジュールを作って以下のコードを実行するとよい。
※使用する際は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=MSDAORA.1;Password=パスワード;User ID=ユーザ;Data Source=接続先;Persist Security Info=True"
  objRec.CursorLocation = adUseClient
  
  'Oracleのシステムテーブルよりテーブル一覧を取得
  sSql = ""
  sSql = sSql & "  SELECT   *"
  sSql = sSql & "  FROM     USER_TABLES"
'  sSql = sSql & "  WHERE    TABLE_NAME  LIKE 'S%'"     '←対象テーブルを絞り込むことも可
  sSql = sSql & "  ORDER BY TABLE_NAME"

  objRec.Open sSql, objConn, adOpenStatic, adLockOptimistic
  
  Do Until objRec.EOF = True
      
      'リンクテーブル作成
      Call createObbcLinkTable(objRec("TABLE_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=ユーザ;PWD=パスワード;"
    
    '★リンクするテーブルを指定(先頭にユーザ名を付与したほうがよい)
    tbl.SourceTableName = "ユーザ." & inTableName

    'パスワードを保存
    tbl.Attributes = dbAttachSavePWD

    'リンク作成
    CurrentDb.TableDefs.Append tbl
  
End Sub

動作確認環境:Windows XP sp2,Access2003


2009/02/17
「パスワードの保存」機能を追記