みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VB2008からAccess2007へのDAO接続でエラーになります。

VB2008からAccess2007へのDAO接続でエラーになります。

VB2008EEからDAO3.6を利用し、Access2007(*.accdb)に接続しようとしていますが、
エラーが発生してしまい、接続できません。
エラーの内容は下記のとおりです。
実行時エラー '3343': データベースの形式 'XXX' を認識できません。

Access2000のデータベース(*.mdb)には普通に接続できています。

Accessのバージョンを問わずに接続したい場合、どうすればよいのでしょうか?

参考までに現在のコードを記載しておきます。

※DAO3.6に参照設定してあります。

Imports dao

Module modConnectDb
Public Function DaoConnect(ByVal strDb As String) As Boolean 'strDb:データベースのファイルパス

Dim Ws As dao.Workspace
Dim DbE As dao.DBEngine
Dim Db As dao.Database
Dim strMsg As String

Try
DbE = New dao.DBEngine
Ws = DbE.Workspaces(0)
Db = Ws.OpenDatabase(strDb)
Catch ex As Exception
strMsg = "エラー番号 " & Str(Err.Number) & vbCrLf & _
Err.Source & " でエラーが発生しました。" & vbCrLf & Err.Description
MsgBox(strMsg, vbExclamation, "エラー")
End Try
End Function
End Module

投稿日時 - 2010-01-19 14:59:20

QNo.5605345

すぐに回答ほしいです

質問者が選んだベストアンサー

やりたいことはよくわかりませんがおそらく DAOのバージョンが違っているため
だと思います。

■ Access2007 実はDAOが新バージョン。
http://isawseashell.blogspot.com/2007/02/attachment-dao-access2007-dao-dao-3.html

投稿日時 - 2010-01-19 22:59:18

お礼

教えていただいたURLと下記URLを参考にし、コードを書き換えたら無事DAOで接続できました。

参考URL:http://bbs.wankuma.com/index.cgi?mode=al2&namber=24713&KLOG=46

修正前) Ws = CreateObject("DAO.DBEngine.36").WorkSpaces(0)

修正後) Ws = CreateObject("DAO.DBEngine.120").WorkSpaces(0)

ありがとうございました。

投稿日時 - 2010-01-20 13:01:58

ANo.2

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

なんで DAOなの?

データー/新しい接続/Microsoft Access データベース ファイル (OLE DB)

で接続すると 右側にサーバーエクスプローラが表示され

その中のテーブルをフォーム上に ドラッグ&ドロップすれば

自動的に データーグリッドビューや VBコードが作成されます。

DAO自体、使用するのは意味ないです。

VB.NETはそのためのメソッドをたくさん用意しています。

■ 10 行でズバリ !! ADO.NET によるデータの更新 (VB)(マイクロソフト)
http://msdn.microsoft.com/ja-jp/events/dd252635.aspx

■ 基礎解説・ADO.NET基礎講座
 ― 初めての.NETデータベース・プログラミング ― 
   第4回 データセットを使ったデータベース・アクセス
http://www.atmarkit.co.jp/fdotnet/basics/adonet04/adonet04_02.html

上記、サイトにて勉強するのをお勧めします。

投稿日時 - 2010-01-19 20:12:36

補足

すみません。最初にDAOにする目的を書いていませんでした。

http://www.nurs.or.jp/~ppoy/access/access/acM054.html
上記サイトにあるように、Access内にあるオブジェクトの一覧を取得するツールをVB2008で作成しています。

対応するAccessのバージョンはできるだけ多くしたく、DAOを使おうとしています。

Ado.netでも同様のことができれば(メソッドがあれば)それでも構わないというか、そのほうが楽なのですが...。

投稿日時 - 2010-01-19 21:34:31

あなたにオススメの質問