Приложение на Delphi 2007, ADO, MS Access, нормально работает на Windows XP, 7, c Office 2007/2010 (забыл какой именно). На Windows 10 64-bit с 16-м офисом, для работы нужно устанавливать Microsoft Access database engine 2010 32-bit. Есть ли способы сделать так, чтобы приложение работало без установки дополнительного ПО?
Это зависит от выбранного драйвера для подключения?
На 64-битной 10-ке с 32-битным 16-м офисом пришлось ставить вышеупомянутый Microsoft Access database engine 2010 32-bit. Microsoft.Jet.OLEDB.4.0 работает вроде только с *.mdb. По хорошему нужно ставить кучу виртуалок с разными системами и офисами для тестирования. Или подумать о переходе с Access на какую нибудь встроенную СУБД.
Дима Соколов: Вот именно, что нужно подумать. Акцесс, хоть и мощная штука, но при серьезной работе лучше использовать его в связке с MS SQL. Экспресс его версия бесплатна и на первых порах никаких проблем не будет. На вторых порах - зависит от того, как у вас пишется код и заливаются данные. Если перейдет через лимит для бесплатной базы - придется либо покупать официально, либо.
Дима Соколов: Вообще у меня, точнее у клиентов вполне успешно работает подобная конструкция.
Условно говоря две версии - для 32 и 64 разрядов, которые отличаются только этими строками.
То есть на 32-разрядных системах - используется подключение Jet, а на 64-разрядных - ACE.
Танцы с установкой 32-разрядных версий на 64-разрядки при наличии установленного офиса - ну их нафиг.
Дима Соколов: это оказалось малоактуальным, поэтому все ядро 32-разрядное, а то что касается импорта данных из внешних access-файлов, то индивидуально у каждого клиента "настраивается" аж две строчки:
...
FROM OPENROWSET(
--'Microsoft.Jet.OLEDB.4.0', -- использовать в 32-разрядных системах
'Microsoft.ACE.OLEDB.12.0', -- использовать в 64-разрядных системах
'путь до файла .mdb'
...
В случае, когда у Вас всё "нормально работает" в системе уже установлено всё, что нужно (скорее всего вместе с Офисом). А на десятке наверное установили 64-битный офис. Поэтому от Вас и требуется доустановить 32-битный драйвер. Или попробуйте скомпилировать Ваше приложение для 64-бит. Работать с Microsoft Access совсем "без ничего" не получится.