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
’********************************************************************
追記
以下の一文をTable.RefreshLinkの前に追記しましたところ
UIDは保存されるようになりました。
Table.Attributes = dbAttachSavePWD
ODBCリンクテーブル名にカーソールを置いた時、
UIDは表示されるようになりましたが、パスワードの項目は空欄のままです。
しかし、アクセスを再起動したところ、ODBCのリンクテーブルのパスワードを
要求されることは無くなりました。
ODBCのリンクテーブルのパスワード要求されることは無くなり
ある程度解決したのですが、技術的な面で釈然としません。
DAOのTableDefの仕様に関して詳しい方がおられましたら
引き続きご指導のほどよろしくお願いします。
「ナビゲーションウィンドウ上のリンクテーブルにマウスオーバーさせた際に
表示されるヒントテキスト」についておっしゃっているのであれば、
そのヒントテキストからは
PWD
パラメータが除外されています。あくまでナビゲーションウィンドウにおける表示上の問題に過ぎません。
実際に格納されている接続文字列を確認したければ、RefreshLink メソッドが実行された後の
Connect プロパティの値をイミディエイトウィンドウに出力するなどなさればよいでしょう。
sk様
お世話になっております。
Connect プロパティの値をイミディエイトウィンドウで確認したところ
きちんとパスワードも設定されておりました。ACCESS RunTimeしか入っていない
PCで動作確認したとこと正常に動作しました。
ご指導していただき、安心して本番環境で問題なく運用できます。
今後ともよろしくお願いいたします。
これにてこのスレッドは解決とさせていただきます。
以上