2つのプロジェクト(Word-Templateプロジェクトとテスト用のVB.Netコンソールアプリケーション)を備えたVisualStudio2008ソリューションがあります。どちらのプロジェクトも、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テンプレートプロジェクトからこの関数を呼び出すと、すべてが正常に機能します。エラーはありません。しかし、コンソールアプリケーションから実行すると、次の例外がスローされます
ex ={"'Microsoft.ACE.OLEDB.12.0'プロバイダーはローカルマシンに登録されていません。"}
両方のプロジェクトの参照は同じで、コンソールアプリケーションは最初に作成したとき(しばらく前)は機能していましたが、現在は機能していません。私は何かが足りないに違いないが、何がわからない。何か案は?