0
votes

Please explain this one to me ....

I am on a x64 bit computer (well, not literally standing on it :) ). And I have Office x64 installed, including x64 Microsoft Access.

Using Access I can open ACCDB and MDB files. yet, if I run the x64 ODBC Drivers component there is NO Microsoft Access Database (*.mdb, *.accdb) driver listed.

The only way I can get it listed is if I install the x64 Access 2013 Runtime. Then it shows up.

Why is it not showing if I have access only installed?

Basically, I am trying to detect if my own executable is going to be able to open the ACCDB database OK. I do that by examining what drivers are installed.

1
Could it be that your copy of Office is installed as click-to-run? - Gord Thompson
@GordThompson Maybe. I have not heard of Click-to-Run and was not aware if I was doing that. Interestingly the document you linked to mentioned having to install the 2010 or 2013 runtime, which I had to do anyway, and by default doing that causes the drivers to show up. - Andrew Truckle
Note that if you only need the database drivers then you just need to install the "Microsoft Access Database Engine 20xx Redistributable". The "Microsoft Access 20xx Runtime" is only required for running UI applications (or perhaps COM automation) on machines that don't have Access installed. - Gord Thompson
@GordThompson Yes. My app needs it on users computers. But normally if you have access installed you have the drivers and don't need the runtime. Not to worry, I just have to keep the 2013 runtime installed even though I have Access 2016. Just annoying. - Andrew Truckle

1 Answers

4
votes

I had the same problem on a 64 bit Windows 10 system with 64 bit Office 2016. I was missing 64 bit ODBC Access drivers. Listing drivers (from Python's pyodbc module) showed only:

  • 'SQL Server'
  • 'PostgreSQL ODBC Driver(ANSI)'
  • 'PostgreSQL ODBC Driver(UNICODE)'

I installed the Microsoft Access Database Engine 2016 Redistributable from Microsoft's site and it came with the extra drivers needed. I could then list:

  • 'SQL Server'
  • 'PostgreSQL ODBC Driver(ANSI)'
  • 'PostgreSQL ODBC Driver(UNICODE)'
  • 'Microsoft Access Driver (*.mdb, *.accdb)'
  • 'Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)'
  • 'Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)'
  • 'Microsoft Access Text Driver (*.txt, *.csv)'

And I was able to query an accdb file using the ODBC drivers from Python.