#722 | パススルークエリのリンク先を変更するには? | クエリ、VBA | |||||
SQL Serverなどと接続する”パススルークエリ”を作った場合、実行時に毎回ダイアログからデータソースを選択するか、プロパティシートで「ODBC接続文字列」プロパティを指定しておく必要があります。
クエリに関する属性は、VBAではQueryDefオブジェクトを参照することで取得・設定することができます。よってこのクエリの「ODBC接続文字列」プロパティもまたVBAで操作することができます。それを利用することで、VBAから複数のパススルークエリのリンク先を一括して設定することができます。 また、プログラムから動的にリンク先を切り替えることで、
次の例では、カレントデータベース上にあるすべてのパススルークエリをピックアップし、それらのリンク先を一括して設定変更しています。 ここではSQL Server名やデータベース名などは固定値ではありますが、これを応用してプロシージャとして作成したり、オリジナルフォームを用意してそこで入力されたSQL Server名やデータベース名、認証方法あるいはログインIDなどを使って処理させることもできます。 Dim dbs As Database Dim qdf As QueryDef Dim strConnectStr As String 'リンク先への接続文字列を組み立て strConnectStr = "ODBC;DRIVER=SQL Server; SERVER=TestSever; DATABASE=TestDB; Trusted_Connection=Yes;" Set dbs = CurrentDb '全クエリの探索ループ For Each qdf In dbs.QueryDefs With qdf If .Type = dbQSQLPassThrough Then 'パススルークエリならリンク先を更新 .Connect = strConnectStr End If End With Next qdf ※ここではSQL Server名は「TestSever」、データベース名は「TestDB」、認証方法は「Windows認証」としています。”接続文字列”は状況に応じていろいろな記述パターンがありますので、適宜書き換えてください。 |
|||||||
|
Copyright © T'sWare All rights reserved |