Microsoft Office

Access側パススルークエリのODBC接続文字列を一括更新

実家で遊び半分で作っていたAccessデータベースがあるのですが、この度現自宅のテストサーバにMySQLをインストール・ODBC接続が可能になったため接続先をテストサーバに変更したいと思います。

 

が、複数あるパススルーの接続を一個ずつ変えるのもとてもめんどくさい。

 

ということで、接続先を一括で変更するモジュールを作成しました。

 

美しくないかもしれませんが、およそ以下の通りです。

※選択クエリが含まれている場合、それらが強制的にパススルーに変わってしまうとのご指摘を頂戴しましたので修正します。

 

 

Public Function Fun_ODBC接続先更新()

Dim O As Object
Dim db As DAO.Database
Dim pass_q As DAO.QueryDef

Set db = CurrentDb

 

For Each O In Application.CurrentData.AllQueries

Set pass_q = db.QueryDefs(O.Name)
'パススルークエリの場合のみ接続文字列を更新、選択クエリならスルーする
If Left(pass_q.Connect, 4) = "ODBC" Then
pass_q.Connect = GLB_CON
End If
Next

End Function

 

といった感じでしょうか。

※GLB_CONは自分のDB内で使用している変数で、他のモジュールにて定義しているものです。このままだと動かないので、別途定義しなおす必要があるかと思います、念のため。

 

今後も接続先を書き換えることなどあると思うので、接続先変更のフォームでも作ってコマンドボタンに上記のモジュールを割り当てておけば何時でも一括更新が可能になります。

 

結構べんりですな。

オススメの記事

-Microsoft Office
-, ,