Access 2013 リンク テーブルのストアド定義(接続情報)を変更は今までは手動で行っていました。
毎回毎回「面倒だなー」と思っていましたが、msdnで調べていたところ楽できるオブジェクトを見つけました。
今回は、VBAを使ってリンク テーブルのストアド定義をテスト環境から本番環境へ一度に変更する方法をメモ。
VBAを使うため、ワンクリックで切り替えることが出来るので非常に便利です。
サンプル:リンク テーブルを取得する
下記サンプルは、dbo_から始まるリンク テーブルを抽出します。Sub GetLinkTableInfo()
Dim daoDB As DAO.Database, daoTBL As DAO.TableDef
Set daoDB = CurrentDb
For Each daoTBL In daoDB.TableDefs
If InStr(daoTBL.Name, "dbo_") > 0 Then
Debug.Print daoTBL.Name, daoTBL.Connect
End If
Next
End Sub
実行結果は下記のようになります。
サンプル:リンク テーブルの接続先を変更する
元に戻せるよう、変更前のストアド定義を保存しておきましょう。環境によって、「Mid(daoTBL.Name, 5)」を変更する必要があるかもしれません。
ご注意ください。
Sub ChangeLinkTableConnect()
Dim daoDB As DAO.Database, daoTBL As DAO.TableDef
Dim strServer, strDatabase As String
Set daoDB = CurrentDb
strServer = "TESTSERVER"
strDatabase = "TESTDB"
For Each daoTBL In daoDB.TableDefs
If InStr(daoTBL.Name, "dbo_") > 0 Then
On Error GoTo DB_ERR
'Debug.Print daoTBL.Name, daoTBL.Connect
daoTBL.Connect = "ODBC;Trusted_Connection=Yes;APP=Microsoft Office 2013" & _
";DSN=" & strServer & _
";DATABASE=" & strDatabase & _
";TABLE=" & Mid(daoTBL.Name, 5) & ";"
daoTBL.RefreshLink
'Debug.Print "->" & daoTBL.Name, daoTBL.Connect
End If
Next
Exit Sub
DB_ERR:
MsgBox Err.Description
End Sub