プロが教えるわが家の防犯対策術!

デスクトップにあるDatabase1.accdbを開いて
ツールの参照設定で
Microsoft ActiveX Data Objects 2.8 Library
にチェックを入れ

Sub a()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & CurrentProject.FullName

とやろうとしたら、
************************************************************
実行時エラー '-20147467259(80004005)':
データベースの形式'C:\Users\○○\Desktop\Database1.accdb'を認識できません。
************************************************************
となってしまいます。
再起動しても同じです。

ADOは2007では使えないのでしょうか?ご回答よろしくお願いします。

A 回答 (1件)

ファイル形式がACCDBなどのAccess2007以降のモノでしたら


"Provider=Microsoft.Jet.OLEDB.4.0;"

"Provider = Microsoft.ACE.OLEDB.12.0;"
にしてください。

また、デザイン編集中のオブジェクト(フォーム・レポート・マクロ・モジュール)を
保存してから行わないと、(最適化か再起動が確実)
・・・がデータベースを開けない状態、またはロックできない状態・・
のエラーになります。

自身を開くのなら
cn.open・・・・を
Set cn = currentproject.connection
でもいいですね。この場合ならデザインを編集中でも上記エラーにはなりません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

最初
--------------------------------------------------------------------------------
cn.Open "Provider=Microsoft.Jet.OLEDB.12.0;" & "Data Source= " & CurrentProject.FullName
--------------------------------------------------------------------------------
をやってみたところ、
「実行時エラー 3706 プロバイダが見つかりません。正しくインストールされていない可能性があります。」
というエラーになってしまいましたが、
よく見てみたら、jetもACEにしないといけないのですね。

--------------------------------------------------------------------------------
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Set cn = CurrentProject.Connection
rs.Open "テーブル1", cn, adOpenKeyset, adLockOptimistic
--------------------------------------------------------------------------------
でもうまくできました!
ありがとうございました。大変参考になりました。

お礼日時:2012/02/26 16:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!