実家で遊び半分で作っていた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内で使用している変数で、他のモジュールにて定義しているものです。このままだと動かないので、別途定義しなおす必要があるかと思います、念のため。
今後も接続先を書き換えることなどあると思うので、接続先変更のフォームでも作ってコマンドボタンに上記のモジュールを割り当てておけば何時でも一括更新が可能になります。
結構べんりですな。