Delphi XE 2 から MS Access 2013 データベースに接続する方法を知りたいですか? 通常、MS Access 2010 では "Provider=Microsoft.ACE.OLEDB.12.0" を使用しますが、2013 では機能しませんか? 何か案が ??
1 に答える
64 ビット Access_2013 を搭載した Windows_7 マシンで次の VBScript コードをテストしました...
Option Explicit
Dim con, rst
Set con = CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data source=C:\Users\Gord\Desktop\Database1.accdb;"
Set rst = CreateObject("ADODB.Recordset")
rst.Open "SELECT Field1 FROM Table1", con
Wscript.Echo rst("Field1").Value
rst.Close
Set rst = Nothing
con.Close
Set con = Nothing
Wscript.Echo "Done."
...そしてそれはうまくいったので、Provider=
あなたが引用した文字列自体が問題だとは思いません。セットアップに何か他の問題があるはずです。
編集
2 つの Windows_7 マシン (1 つは 64 ビット Office_2010、もう 1 つは 64 ビット Office_2013) を比較すると、重要な違いが明らかになりました。
64 ビットの Office_2010 を搭載したマシンには、32 ビット バージョンと 64 ビット バージョンの両方の Access データベース エンジン (ACE) がインストールされていました。
64 ビットの Office_2013 を搭載したマシンには、64 ビット バージョンの ACEしかありませんでした。ACE の 32 ビット バージョンは存在しませんでした。
VBScript テストを再実行すると、次のことが確認されました。
C:\__tmp>c:\windows\system32\cscript.exe /nologo oledbTest.vbs
Hello
Done.
C:\__tmp>c:\windows\sysWOW64\cscript.exe /nologo oledbTest.vbs
C:\__tmp\oledbTest.vbs(4, 1) ADODB.Connection: Provider cannot be found. It may not be properly installed.
さいわい、64 ビット Office_2013 のユーザーは、.accdb ファイルを操作する必要がある 32 ビット アプリケーションを持っている場合、ここから 32 ビット バージョンの ACE をダウンロードしてインストールできます。
64 ビットの Windows で 32 ビットの Office_2013 を使用しているユーザーの場合、状況は 32 ビットの Office_2010 のユーザーと同じであると思われます。最初に 32 ビット Office をアンインストールします。したがって、32 ビットの Office がインストールされていて、.accdb ファイルを操作する必要がある 64 ビットのアプリを実行したい場合は、「運が悪い」と思います。(残念ながら、64 ビットの Office_2013 インストールしか利用できないため、これをテストすることはできません。)