Автоматизация .NET Access с помощью Access 2007 Runtime - PullRequest
2 голосов
/ 25 марта 2010

У меня проблемы с развертыванием приложения .NET, использующего автоматизацию Microsoft Access.

Я установил Access 2007 Runtime и первичные сборки взаимодействия (PIA) на целевой машине:

Access 2007 Runtime

PIA 2007 Office

Однако, когда я пытаюсь создать ApplicationClass:

Application access = new ApplicationClass();

Я получаю следующее исключение:

Необработанное исключение: System.Runtime.InteropServices.COMException (0x80080005): не удалось получить фабрику классов COM для компонента с CLSID {73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9} из-за следующей ошибки: 80080005. * 1019

Я погуглил код ошибки и попытался настроить параметры безопасности в dcomcnfg, но безрезультатно.

Есть идеи?

Я не хочу устанавливать полную версию Access из-за стоимости, и среда выполнения должна хотя бы иметь возможность создавать экземпляр приложения, конечно же?

Ответы [ 2 ]

5 голосов
/ 27 марта 2010

Вы не можете запустить автоматический экземпляр среды доступа. Что происходит, так это доступ запускается при создании экземпляра. Однако, поскольку это среда выполнения, доступ закрывается. Другими словами, вам нужно открыть базу данных, чтобы среда выполнения оставалась открытой.

Поскольку невозможно предоставить имя файла для открытия с помощью автоматизации, то обходной путь заключается в использовании функции Shell (). Запустите копию ms-access через shell (), и это позволит вам предоставить файл accDB или mdb в качестве параметра команды shell. Затем в вашем .net-коде вместо объекта create используйте эквивалент объекта get.

Так что это же ограничение существует для разработчиков доступа, когда мы пытаемся автоматизировать ms-доступ во время выполнения. Вы не можете создать экземпляр в коде. Однако, как показано выше, вы должны использовать Shell () из-за вышеупомянутого ограничения, что среда выполнения доступа закрывается при запуске без параметра файла.

0 голосов
/ 25 марта 2010

PIA не будут работать без программного обеспечения, обеспечивающего интерфейс для установки.

Если вы не хотите, чтобы Access был установлен на компьютерах вашего пользователя, вы можете

  • Перепишите приложение в приложение Access в VBA и разверните его с помощью Access Runtime.
  • Используйте драйвер системы Office 2007: компоненты подключения к данным для доступа к базе данных, однако этот механизм не предоставляет многих функций доступа, таких как отчеты, формы, функции в запросах и т. Д.

Если вы переключаетесь на ODBC / OLEDB / ADO, я предлагаю вам перейти на SQL Server Express, SQL Server Compact Edition или другое бесплатное программное обеспечение для баз данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...