У меня есть приложение, которое работает нормально в 32-разрядной версии, используя строку подключения:
Driver={Microsoft Access Driver (*.mdb)}; Dbq=MyDatabase.mdb;
с использованием ADO в C ++ на P C без установки Office.
I Я конвертировал его в x64, и я считаю, что мне нужно установить некоторые драйверы Access, независимо от того, установлен ли на хосте P C x64 Office или нет. Поэтому я беру Microsoft Access Database Engine 2016 Reistributable и устанавливаю его.
В целом все работает нормально, но некоторые SQL запросы не выполняются. Наиболее заметно те, которые используют LIKE '%somevalue%'
- теперь я понимаю, что %
- это ANSI-92, но он работает нормально, как я говорю, поэтому предположим, что это связано с ADO (я мог бы изменить это на ALIKE
я думаю).
Чего я не понимаю, так это того, что если я установлю Access Database Engine 2010, то все будет работать как положено Кажется, что-то другое в Access Database Engine 2016. Я искал некоторые заметки о выпуске / критические изменения, но ничего не смог найти.
Так что мой вопрос: есть ли изменения в том, как SQL проанализирован в Microsoft Access Database Engine 2016 и должен ли я просто попросить клиентов установить версию 2010?
Примечание: другой запрос, который, по-видимому, не выполняется, - это таблица с полем Yes/No
. У меня есть запрос, который проверяет: field <> 0
, и это выдает исключение.
Обновление: если я установлю Microsoft Access 2016 Runtime, тогда, кажется, все работает. Таким образом, проблема выглядит следующим образом: c Microsoft Access Database Engine 2016
Итак, в итоге:
No Office Installed: Installed Access 2016 x64 Database Engine: Query FAILS
No Office Installed: Installed Access 2010 x64 Database Engine: Query PASSES
32bit Office Installed: Installed Access 2016 x64 Database Engine: Query FAILS
32bit Office Installed: Installed Access 2010 x64 Database Engine: Query PASSES
x64 Office Installed: Installed Access 2016 x64 Database Engine: Query PASSES
Где запрос:
SELECT * from sometable WHERE somefield LIKE '%ABC%';
Настройка :
Window 10 Version 1909
32 bit Office: Microsoft Office MSO 16.0.12325.20280 32bit
64 bit Office: Microsoft Office MSO 16.0.12325.20280 64bit
Доступ к ядру базы данных (x64) здесь: microsoft.com / ru-ru / download / details.aspx? Id = 54920
Мое приложение это x64