У меня есть решение Visual Studio 2008 с двумя проектами (проект Word-Template и консольное приложение VB.Net для тестирования). Оба проекта ссылаются на проект базы данных, который открывает соединение с файлом базы данных MS-Access 2007 и имеет ссылки на System.Data.OleDb. В проекте базы данных у меня есть функция, которая извлекает таблицу данных следующим образом
private class AdminDatabase
' stores the connection string which is set in the New() method
dim strAdminConnection as string
public sub New()
...
adminName = dlgopen.FileName
conAdminDB = New OleDbConnection
conAdminDB.ConnectionString = "Data Source='" + adminName + "';" + _
"Provider=Microsoft.ACE.OLEDB.12.0"
' store the connection string in strAdminConnection
strAdminConnection = conAdminDB.ConnectionString.ToString()
My.Settings.SetUserOverride("AdminConnectionString", strAdminConnection)
...
End Sub
' retrieves data from the database
Public Function getDataTable(ByVal sqlStatement As String) As DataTable
Dim ds As New DataSet
Dim dt As New DataTable
Dim da As New OleDbDataAdapter
Dim localCon As New OleDbConnection
localCon.ConnectionString = strAdminConnection
Using localCon
Dim command As OleDbCommand = localCon.CreateCommand()
command.CommandText = sqlStatement
localCon.Open()
da.SelectCommand = command
da.Fill(dt)
getDataTable = dt
End Using
End Function
End Class
Когда я вызываю эту функцию из моего проекта Word 2007 Template, все работает нормально; нет ошибок. Но когда я запускаю его из консольного приложения, он выдает следующее исключение.
ex = { "Microsoft.ACE.OLEDB.12.0" провайдер не зарегистрирован на локальная машина. "}
Оба проекта имеют одинаковую ссылку, и консольное приложение действительно работало, когда я впервые написал его (некоторое время назад), но теперь он прекратил работу. Я должен что-то упустить, но я не знаю, что. Любые идеи?