Во время выполнения Access 2010 происходит сбой .NET OleDbConnection.Open () с файлом Access97 MDB - PullRequest
2 голосов
/ 19 августа 2011

Я поддерживаю приложение .NET 3.5 (с использованием Visual Studio 2008), которое выполняет вызов OleDbConnection.Open () с поставщиком строки подключения Microsoft.ACE.OLEDB.12 и файлом MDB с форматом Access97.Это приложение требует, чтобы Access 2007 Runtime был установлен.

Вызов OleDbConnection.Open () завершается успешно, если установлена ​​среда выполнения Office 2007 и среда выполнения Access 2010 НЕ установлена.После установки Access 2010 Runtime (например, пользователь устанавливает Office 2010) вызов завершается ошибкой.Сообщение об ошибке «Не удается открыть базу данных, созданную с помощью предыдущей версии приложения».

  1. При чтении других потоков в StackOverflow и в других местах создается впечатление, что Access 2010 не поддерживает чтение илипреобразование файлов Access97 MDB.Нет ли способа вызвать функциональность среды выполнения Office 2007 после установки среды выполнения Access 2010 (без удаления Access 2010).

  2. Другим подходом может быть программное преобразование из Access97 MDB вболее поздний формат, который может быть прочитан Access 2010. Я попытался вызвать: Microsoft.Office.Interop.Access.Application.ConvertAccessProject (), реализованный в библиотеке объектов Microsoft Access 14.0;с различными версиями Access, но я получаю ошибку COM (сбой при выполнении сервера 80080005).

  3. Я также пытался запустить msaccess.exe в моем приложении с флагом / Convert.Это приводит к открытию Access 2000, но с сообщением об ошибке («Microsoft Access не удалось преобразовать ...»).

  4. Кстати, базы данных MDB не содержат ничего «сложного», никаких реляционных данных, никаких макросов, безопасности и т. Д., Только простые записи.

  5. Я нашел несколько полезных советов по программированию на сайте Аллена Брауна (http://allenbrowne.com/ser-48.html "Преобразование из Access97" и http://allenbrowne.com/Access2007.html "Преобразование в Access 2007"), но ничего такого не получилось.

Есть мысли о лучшем способе решения этой проблемы?

1 Ответ

0 голосов
/ 25 сентября 2011

Я бы проголосовал за преобразование из формата A97 в Jet 4, который будет широко поддерживаться в течение очень долгого времени (даже несмотря на то, что ACE вышел с 2007 года).

...