I have an x64 application which uses Microsoft.ACE.OLEDB.12.0 provider to read an MS Access Database on Windows 7 (x64) and it works fine (Office 2010 installed).
The same application running under Windows 8 with Office 2013 installed, fails with a message saying that the provider cannot open previous versions.
Under Windows 8 with Office 2013 installed, there is also Microsoft.ACE.OLEDB.15.0, but I have double checked my code and certain that it is specifying the 12.0 in the connection string.
Are there different "versions" of this provider -or is there something I've missed?
I have recompiled a test program under Windows 8 for using x86 platform, and changed the provider to Microsoft.Jet.OLEDB.4.0 and it all works again. Unfortunately, the module is part of a bigger ecosystem that needs to be able to be run under x64 (specifically an plug in to excel), and the access database is downloaded by the suite from a supplier's web site by the application, so it is not practical to convert the database or change everything to x86.
Thanks in advance.
Just to clarify the behavior described by OP:
With Office 2013 (ACE 15.0) Microsoft cancelled support for mdb-Files created with Jet 3.x and before (that is, Access 97 and earlier). I therefore strongly assume that the OP's database that caused the problem was an Access97-DB. Jet 4.0 databases (Access 2000, aslo .mdb) are still supported and will not produce any errors.
The fact that Office 2013 also registers its newer drivers as earlier versions is a deliberate attempt from MS to keep many programs and scripts working, that have a hard-coded provider name built in. As you recognized on your upgrade, this only keeps many working, not all...
It occurred to me to check the versions of files being used for each provider, and hunting through the registry, found that under a clean Windows 8 install, with Office 2013 installed, both providers point to the same assembly.
(C:\Program Files\Common Files\microsoft shared\OFFICE15\ACEOLEDB.DLL)
I then downloaded and ran the Microsoft Access Database Engine Redistributable (http://www.microsoft.com/en-us/download/details.aspx?id=13255) which then installed the proper version of the 12.0 provider into C:\Program Files\Common Files\microsoft shared\OFFICE14\ACEOLEDB.DLL and the application is behaving itself as expected.
It would seem strange that MS have included a provider branded as 12.0 that doesn't behave like 12.0 any more.
Anyway - hope that helps someone from 4-5 hours of hair pulling...
Craig
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With