Microsoft Access 掲示板

ODBCリンクテーブルの情報を更新したい

3 コメント
views

 SQLServer2016、ACCESS2019で簡単な在庫管理ソフトを作っています。
作成したアクセスのソフトをRunTimeで作動させるときに
初回起動時にODBCのリンクテーブルのリンク情報を一度更新しなければいけない事になりました。

RunTimeなのでアクセスのタブにODBCのリンクテーブルを更新できるコマンドがないため
VBAにてODBCのリンクテーブルを更新するプログラムを作成しております。
リンク更新処理は出来るようになりましたが、コードに記載したパスワード、UIDが
リンク更新時に保存さてておりません。

 TableDefAttributeEnum.dbAttachSavePWDを使用してパスワードと
UIDを登録するのではないかと推測しおりますが、いまいち情報が少なく困っています。 
ODBCを更新するときにパスワードとUIDも保存できる方法の
情報をお持ちの方がいられましたらご教示お願い致します。

以下ODBCリンクテーブルを更新するプログラムです
’********************************************************************
Private Sub btnODBC_Click()

Dim Table As DAO.TableDef

 For Each Table In CurrentDb.TableDefs
 
  ’ODBCのリンクテーブルの時にはODBCデータを更新する				                
  If Table.Attributes And TableDefAttributeEnum.dbAttachedODBC Then 
     
    ’ODBCの情報を以下の内容で更新する
     Table.Connect = "ODBC; DATABASE=testSample;UID=xx;PWD=xxx;DSN=xxxxx;"
         
     ’ODBCのリンクを更新実行
     Table.RefreshLink '←ここをTableDefAttributeEnum.dbAttachSavePWDにてパスワード、UIDを保存する%%
               ’内容に書き換えると更新したときにパスワード、、UIDがODBCテーブルに保存される?  
  End If
Next

End Sub
’********************************************************************
PPP
作成: 2025/07/13 (日) 08:00:42
最終更新: 2025/07/20 (日) 08:29:01
通報 ...
1
PPP 2025/07/13 (日) 11:23:54 修正 50473@7267b

追記
  以下の一文をTable.RefreshLinkの前に追記しましたところ
  UIDは保存されるようになりました。
  Table.Attributes = dbAttachSavePWD
  
  ODBCリンクテーブル名にカーソールを置いた時、
  UIDは表示されるようになりましたが、パスワードの項目は空欄のままです。
  しかし、アクセスを再起動したところ、ODBCのリンクテーブルのパスワードを
  要求されることは無くなりました。 
  
  ODBCのリンクテーブルのパスワード要求されることは無くなり  
  ある程度解決したのですが、技術的な面で釈然としません。  
  DAOのTableDefの仕様に関して詳しい方がおられましたら
  引き続きご指導のほどよろしくお願いします。  

以下、ODBCのリンクテーブルのパスワードが要求されることが無くなったコード
’※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
Private Sub btnODBC_Click()

Dim Table As DAO.TableDef

 For Each Table In CurrentDb.TableDefs
 
 ’ODBCのリンクテーブルの時にはODBCデータを更新する            
  If Table.Attributes And TableDefAttributeEnum.dbAttachedODBC Then
     
     ’ODBCの情報を以下の内容で更新する
     Table.Connect = "ODBC; DATABASE=testSample;UID=xx;PWD=xxx;DSN=xxxxx;"
     
      ’※※※※※※※※※※※※※※※※※※
     ’UID,パスワードを保存するコードを追加%%
     Table.Attributes = dbAttachSavePWD
     ’※※※※※※※※※※※※※※※※※※※

     
     ’ODBCのリンクを更新実行
     Table.RefreshLink ’←ここをTableDefAttributeEnum.dbAttachSavePWDにてパスワード、UIDを保存する
               ’内容に書き換えると更新したときにパスワード、、UIDがODBCテーブルに保存される?  
  End If
Next

End Sub
’※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
2

ODBCリンクテーブル名にカーソールを置いた時、
UIDは表示されるようになりましたが、パスワードの項目は空欄のままです。

ナビゲーションウィンドウ上のリンクテーブルにマウスオーバーさせた際に
表示されるヒントテキスト」についておっしゃっているのであれば、
そのヒントテキストからはPWDパラメータが除外されています。
あくまでナビゲーションウィンドウにおける表示上の問題に過ぎません。

実際に格納されている接続文字列を確認したければ、RefreshLink メソッドが実行された後の
Connect プロパティの値をイミディエイトウィンドウに出力するなどなさればよいでしょう。

3

sk様
お世話になっております。
Connect プロパティの値をイミディエイトウィンドウで確認したところ
きちんとパスワードも設定されておりました。ACCESS RunTimeしか入っていない
PCで動作確認したとこと正常に動作しました。

ご指導していただき、安心して本番環境で問題なく運用できます。
今後ともよろしくお願いいたします。

これにてこのスレッドは解決とさせていただきます。
以上