我刚刚在带有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=
你引用的字符串就是问题所在
本身
。您的设置肯定有其他问题。
编辑
比较两台Windows_7计算机,一台与64位Office_2010,另一台与64bit Office_2013,发现了一个重要的差异:
重新运行我的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的用户可以从下载并安装32位版本的ACE
here
如果他们有32位的应用程序需要使用.accdb文件。
对于64位Windows上32位Office_2013的用户,我怀疑情况与32位Officex2010的用户相同:他们只有32位版本的ACE,除非先卸载32位Office,否则无法安装64位版本。所以,如果你安装了32位Office,并且你想运行一个需要处理.accdb文件的64位应用程序,那么我相信你“运气不好”。(遗憾的是,我无法对此进行测试,因为我只能安装64位Office_2013。)