У меня есть приложение C # WPF, которое должно автоматизировать создание базы данных Access 2016.
Выполняет следующий код:
try
{
var tempDb = new Access.Application();
tempDb.OpenCurrentDatabase(tempDbPathFile);
В строке для OpenCurrentDatabase возникает следующее исключение:
Произошла исключительная ситуация System.AccessViolationException HResult = 0x80004003
Сообщение = Попытка чтения или записи в защищенную память. Это часто
признак того, что другая память повреждена.
Source = Microsoft.Office.Interop.Access StackTrace: в
Microsoft.Office.Interop.Access.ApplicationClass.OpenCurrentDatabase (String
filepath, Boolean Exclusive, String bstrPassword) в
AccessLauncher.WPF.Launcher.ExportFormsAndQueries (String
tempDbPathFile, String userDbPathFile)
Я не использую взаимодействие для Access97 - только для Access2016. Единственное взаимодействие, которое приложение должно выполнить с 97, - это скопировать существующую пустую базу данных 97 в локальную папку, а затем заполнить ее, выбрав Sql Server с помощью OleDbCommand.
Я пробовал один и тот же код на нескольких компьютерах, и я получаю ошибку только на компьютерах, на которых установлены Access2016 и Access97. К сожалению, это требование, поскольку приложение должно иметь возможность создавать разные базы данных в обоих форматах - которые впоследствии могут открывать пользователи (в Access97 или Access2016, в зависимости от ситуации) для редактирования.
Есть идеи, как это можно решить?