「ACCESSの起動時に最後に使用したDBを開く」という設定があるようですが、これでいけませんかね?
ACCESSにてODBC経由でORACLEに接続してリンクテーブルを作成しています。
ACCESSを開き直すたびにODBCのリンクが切れてしまうという事象が発生しております。
以下のいずれかの方法についてご存じの方がいらっしゃいましたら教えていただけないでしょうか。
・ACCESSを開き直すたびにODBCの接続が切れてしまうという事象自体を改善する方法
・VBAでリンクテーブルを作成する方法(できればソースもいただきたい。)
[使用環境]
Windows10
ACCESSバージョン14(32bit)
ORACLE Client 11.2.0(32bit)
ODBC--'ODBC名'への接続が失敗しました。
ACCESSファイルを開き直したあとにリンクテーブルを開こうとすると
上記のエラーが表示されます。
以下いずれかの方法を行うと改善します。
1.適当になにか1つのテーブルのリンクを生成する。
2.リンクテーブルマネージャーからリンクを更新する
すべてのテーブルで行う必要はなくどれか1つのテーブルのリンクを生成もしくは更新
すると改善されます。
「ACCESSの起動時に最後に使用したDBを開く」という設定があるようですが、これでいけませんかね?
@pbatour
Questioner試してみましたが、だめでした。
パスワードも保存されているでしょうか?
@pbatour
Questionerはい。保存しています。
リフレッシュで回復するなら
Dim Dbs As Database
Set Dbs = CurrentDb
Dbs.TableDefs.Refresh
すべてのODBCリンクのリフレッシュなら
Dim Dbs As Database
Set Dbs = CurrentDb
For Each Tdf In Dbs.TableDefs
If Tdf.Connect Like "ODBC;*" Then
Tdf.RefreshLink
Tdf.Fields.Refresh
End If
DoEvents
Next Tdf
Dbs.TableDefs.Refresh
@pbatour
Questionerやってみたんですが、データソース選択画面が表示されてしまいます。
VBAで接続先のODBCを設定することはできないですか。
Tdf.Connect
にODBCの接続文字列を指定します。
Dim Dbs As Database
Set Dbs = CurrentDb
For Each Tdf In Dbs.TableDefs
If Tdf.Connect Like "ODBC;*" Then
Tdf.Connect = "ODBC;DRIVER=xxxx;UID=xx;PWD=xx;DATABASE=xx;SERVER=xxx;"
Tdf.RefreshLink
Tdf.Fields.Refresh
End If
DoEvents
Next Tdf
Dbs.TableDefs.Refresh
@pbatour
Questionerご回答ありがとうございます。
うまく接続できないので接続情報を確認させてください。
以下で設定はあってますよね?
DRIVER={Oracle in OraDb11g_home1}
DATABASE=(TNSサービス名を設定※)
※TNSNAMES.oraでいうところのSERVICE_NAMEに設定している文字列)
SERVER=(DBサーバーのIPを設定)
すでに書かれているデータソースに指定している接続文字列と同じだと思います。
@pbatour
Questioner>すでに書かれているデータソースに指定している接続文字列と同じだと思います。
となるとデータソースに書かれれいる接続文字列のどこがどの値にあたりますか。
DATABASEとSERVERの設定値はデータソースのどの項目の値を設定するのでしょうか。
@pbatour
Questionerたとえば現在この設定だった場合にDATABASEとSERVERにはどの値を設定すればよいですか。
[データソースの設定値]
ODBCデータソース名:AAA
TNSサービス名:BBB
ユーザーID:CCC
パスワード:DDD
[NET MANAGER(TNSNAMES.ora)の設定値]
ホスト名:192.168.1.10
サービス名:EEE
.RefreshLinkですが、MDBにしか有効じゃない感じがします。
ODBCのリンクでも使えますか。