У меня была точно такая же проблема, кроме записи в БД SQL 2008. VS2008, код VB.net с фреймворком 3.5, Windows 7 64-битная. Код работает нормально на XP.
Ответ Джона Р. дал правильное решение: изменив расширенные параметры компиляции проекта, установив для «Target CPU» значение «x86».
Эта проблема может иметь больше симптомов, чем первоначально описано. Я обобщу их:
Доступ к ACCESS - не единственная проблема; это происходит и с SQL (по крайней мере, с MS SQL 2008).
Некоторые из вызовов БД могут и работают. Это как если бы вызовы настраивали вас на неудачу, но точка сбоя происходит позже, в произвольной точке вашей программы.
Точка сбоя, которую я увидел, была во время вызова подпрограммы. (просто обычный вызов подпрограммы, которую я создал в VB.) Если поместить блок try-catch вокруг вызова, это не отразит ошибку.
Вот самая странная часть: перед ошибочным вызовом подпрограммы код имел исключение HANDLED. По иронии судьбы, исключением было ТОЧНО то, что бросали при ошибочном вызове. Когда я «подправил» код, чтобы избежать предыдущего исключения, при ошибочном вызове не было создано никакого исключения; Программа VB ПРОСТО ВЫЙТИ БЕЗ ОШИБКИ Похоже, что какой-либо код имеет проблему, он повторно использует последнее обработанное исключение. Это будет означать, что если ваш код ранее имел ошибку «индекс за пределами» или «деление на 0», это то, что вы (вероятно) увидели бы, когда код запирает (из-за отсутствия 64-битной библиотеки DLL). проблема может маскироваться под кучу ошибок!