Мне интересно, как подключиться к базе данных MS Access 2013 из Delphi XE 2? Я обычно использую «Provider=Microsoft.ACE.OLEDB.12.0» для MS Access 2010, но он больше не работает с 2013? любая идея ??
Как получить доступ к базе данных Microsoft Access 2013 из delphi XE2?
Ответы (1)
Я только что протестировал следующий код VBScript на машине Windows_7 с 64-разрядной версией Access_2013...
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, а другой с 64-разрядной версией Office_2013, выявило важную разницу:
На машине с 64-разрядной версией Office_2010 были установлены как 32-разрядная, так и 64-разрядная версии ядра СУБД Access (ACE).
На машине с 64-разрядной версией Office_2013 была только 64-разрядная версия ACE. 32-битной версии ACE НЕ было.
Повторный запуск моего теста 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 с здесь, если у них есть 32-разрядные приложения, которым необходимо работать с файлами .accdb.
Я подозреваю, что для пользователей 32-разрядной версии Office_2013 в 64-разрядной Windows ситуация такая же, как и для пользователей 32-разрядной версии Office_2010: у них есть только 32-разрядная версия ACE, и они не могут установить 64-разрядную версию, если только они сначала удаляют 32-разрядный Office. Итак, если у вас установлен 32-разрядный Office и вы хотите запустить 64-разрядное приложение, которое должно работать с файлами .accdb, я считаю, что вам «не повезло». (Увы, я не могу проверить это, так как у меня есть только 64-разрядная установка Office_2013.)
C:\Program Files\Common Files\Microsoft Shared\OFFICE15\ACEOLEDB.DLL
и C:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\ACEOLEDB.DLL
. Можете ли вы найти любой из них? Оба? Никто?
- person Gord Thompson; 06.04.2013