[PR]
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ODBC接続経由時のパスワード入力を省く
Microsoft Access 2000
IBM iSeries Access for Windows
ODBC接続経由でサーバーのDBにアクセスすると、「サーバー」「ユーザー名」「パスワード」の入力を求められます(上記画像参照)
1度入力すればその後PCを終了するまで有効となり、再度入力を求められる事はありませんが、使用者の手間になるので省きたいところです。
という事でMDB起動時にでも以下の処理を実行するようにします。
Public Function i5Connect() As Long
'参照設定:Microsoft DAO 3.x Object Library
Dim db As DAO.Database
Dim qd As DAO.QueryDef
Dim rs As DAO.Recordset
Set db = Application.CurrentDb
Set qd = db.CreateQueryDef(Name:="", SQLText:="SELECT * FROM [テーブル名]")
Let qd.Connect = "ODBC;DSN=[データ・ソース名];;TABLE=[テーブル名];UID=[ユーザー名];PWD=[パスワード];"
On Error Resume Next
Set rs = qd.OpenRecordset()
Select Case Err.Number
Case 0
rs.Close
Case Else
MsgBox (Err.Number & VBA.vbNewLine & Err.Description)
End Select
On Error GoTo 0
qd.Close
db.Close
Set rs = Nothing
Set qd = Nothing
Set db = Nothing
End Function
これでサーバーDBにアクセスする前にVBAにて存在するテーブルを開くという処理をしてあげる事で使用者がパスワードを入力しなければならないという手間が省けます。
なお、ここでselectしているテーブルはサーバーに存在するDBです。これはなるべく軽いものをお勧めします。
Let qd.Connect にて指定する文字は、実際にサーバーへのリンクテーブルを作り、そのテーブルプロパティの説明部分を参考にすると良いでしょう。
同じくLet qd.Connect にて指定している「UID」と「PWD」は、ODBC接続時に入力するユーザー名とパスワードを入れて下さいね。
MDBファイルのショートカット
① 他MDBにあるテーブルとの同期
② アプリケーション(MS Access)の終了
以上の処理をするMDBファイルですが、ショートカットから実行すると
「●●●.mdbが見つかりません。名前を正しく入力したかどうかを確認してから、やり直してください。ファイルを検索するには、[スタート]ボタンをクリックしてから、[検索]をクリックしてください。」
「プログラムにコマンドを送信しているときに、エラーが発生しました。」
のエラーが発生します。
肝心な同期処理は自体は正常に実行されているようです。
ショートカットからではなく、MDB本体を実行すればエラーメッセージは表示されません。
あと②の「DoCmd.Quit」がなければエラーになりません。
解決方法:
ショートカットのプロパティ→ショートカットタブのリンク先にMicrosoft AccessのEXEまでのパスを追加してあげます。これで正常に終了するようになりました。
例:"C:\Program Files\Microsoft Office\Office\MSACCESS.EXE" D:\db1.mdb