From Evernote: |
[ACCESS]ACCESS2.0でODBC接続でもパスワードを聞かれる対応 |
ACCESS2.0でSQLServerにリンクテーブルとして接続する場合、
ODBC設定でパスワードを入れているのに
毎回パスワードを聞かれる。
解決策が見つからなかったので、
一度接続するモジュールを作成し、
それをAutoExe(起動時に走るマクロ)に埋め込むことにした。
1度接続すれば以降は出ないので。
モジュールは以下。
'-----------------------------------------
Function SQLLogin ()
Dim stConnect As String
Dim strDSN As String: strDSN = "systest.aa"
Dim strDB As String: strDB = "testDB"
Dim strUser As String: strUser = "user"
Dim strPass As String: strPass = "pwd"
'ODBC名はここに
stConnect = "ODBC;DSN=ここにODBC名;UID=" & strUser & ";PWD=" & strPass & ";DATABASE=" & strDB & ";"
Dim WS As WorkSpace
Dim DB2 As Database 'データベースオブジェクト変数
Dim RS2 As Recordset 'レコードセットオブジェクト変数
Set WS = DBEngine.Workspaces(0)
Set DB2 = WS.OpenDatabase("", False, False, stConnect)
Dim mySQL As String
'テキトー
mySQL = "SELECT * FROM sysobjects WHERE xtype IN ('N' , 'U' ) ORDER BY name"
Set RS2 = DB2.OpenRecordset(mySQL, db_open_Dynaset)
'レコードセットオブジェクトを閉じる
RS2.Close
Set RS2 = Nothing
'データベースオブジェクトを閉じる
DB2.Close
Set DB2 = Nothing
End Function
stConnect = "ODBC;DSN=ここにODBC名;UID=" & strUser & ";PWD=" & strPass & ";DATABASE=" & strDB & ";"
Dim WS As WorkSpace
Dim DB2 As Database 'データベースオブジェクト変数
Dim RS2 As Recordset 'レコードセットオブジェクト変数
Set WS = DBEngine.Workspaces(0)
Set DB2 = WS.OpenDatabase("", False, False, stConnect)
Dim mySQL As String
'テキトー
mySQL = "SELECT * FROM sysobjects WHERE xtype IN ('N' , 'U' ) ORDER BY name"
Set RS2 = DB2.OpenRecordset(mySQL, db_open_Dynaset)
'レコードセットオブジェクトを閉じる
RS2.Close
Set RS2 = Nothing
'データベースオブジェクトを閉じる
DB2.Close
Set DB2 = Nothing
End Function
'-----------------------------------------