初歩的なことで大変恐縮です。
過去の質問や書籍等で調べたのですが、どうしても具体的な解決に至りませんでしたので質問させていただきました。
VB6、ACCESS2000、接続はJetOLEDB4.0 です。
排他的でパスワードをかけたmdbファイルをVBで開くとき、★印の部分の最後に記述をしたいpassword = "userpass"のつなげかたが分かりません。エラーは「パスワードが正しくありません」や「コンパイルエラー」が返ってきます。
よろしくお願いします。
---------------------------------------
Option Explicit
'MDBにアクセスするための情報定義
Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" _
(ByVal hwndParent As Long, _
ByVal fRequest As Long, _
ByVal lpszDriver As String, _
ByVal lpszAttributes As String) As Long
Public objAdo_Con As New ADODB.Connection
Public objAdo_Cmd As New ADODB.Command
Public objAdo_Rs As New ADODB.Recordset
Public objInetExp As Object
Public sql, server_ip, server, current_db
Dim k
-------------------------------------------
Public Sub initDB()
'データベースを使用できるようにする
objAdo_Con.Mode = adModeShareDenyNone
★objAdo_Con.Open PROVIDER & DATASOURCE & App.Path & "\" & DATABASE
objAdo_Cmd.ActiveConnection = objAdo_Con
Set objAdo_Rs.ActiveConnection = objAdo_Con
End Sub
----------------------------------------------
以下の要領で。
Jet OLEDB:Database Password=yourpassword;
もげ様ありがとうございます。
アドバイスをもとに、★行末にセミコロンを付し、そのあとに追加をしてみましたが、コンパイルエラー 構文エラーになってしまいます。
objAdo_Con.Open PROVIDER & DATASOURCE & App.Path & "\" & DATABASE;
Jet OLEDB:DATABASE Password="yourpassword"
・・・とそのままつなげるだけでは、うまくいかないようです。
どう記述すれば良いでしょうか?基本的な質問ですみません。
文字列の連結の仕方がおかしいのでしょう。
PROVIDERとかDATASOURCEにどんな文字列が入っているか不明ですが、
Dim cnn As NewADODB.Connection
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"DataSource=C:\nwind.mdb;Jet OLEDB:Database Password=password;"
のようになればいいでしょう。
貴殿の場合は、
Dim strCon As String
strCon = PROVIDER & DATASOURCE & App.Path & "\" & DATABASE
MsgBox strCon
objAdo_Con.Open strCon
のようにして、接続文字列に何が渡っているか確認すれば
理解が早いかもしれません。
strCon = PROVIDER & DATASOURCE & App.Path & "\" & DATABASE
strCon = strCon & ";"
strCon = strCon & "Jet OLEDB:DATABASE Password=" & "あなたのパスワード"
strCon = strCon & ";"
'最後のセミコロンは要らないかもしれませんが。
もげ様、ご丁寧な解説ありがとうございました。ご指摘の通り文字列の連結の仕方がまずかったようです。MsgBox で確認をしながらやってみましたところ、無事うまくいきました。最後のセミコロンはつけたままでも大丈夫でした。ご教授感謝いたします。
ツイート | ![]() |