Ich habe eine Visual Studio 2008-Lösung mit zwei Projekten (ein Word-Template-Projekt und eine VB.Net-Konsolenanwendung zum Testen). Beide Projekte verweisen auf ein Datenbankprojekt, das eine Verbindung zu einer MS-Access 2007-Datenbankdatei herstellt, und verweisen auf System.Data.OleDb. Im Datenbankprojekt habe ich eine Funktion, die eine Datentabelle wie folgt abruft
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
Wenn ich diese Funktion aus meinem Word 2007-Vorlagenprojekt aufrufe, funktioniert alles einwandfrei. keine Fehler. Wenn ich es jedoch über die Konsolenanwendung ausführe, wird die folgende Ausnahme ausgelöst
ex = {"Der Anbieter 'Microsoft.ACE.OLEDB.12.0' ist nicht auf dem lokalen Computer registriert."}
Beide Projekte haben dieselbe Referenz und die Konsolenanwendung hat funktioniert, als ich sie zum ersten Mal geschrieben habe (vor einiger Zeit), aber jetzt funktioniert sie nicht mehr. Ich muss etwas vermissen, aber ich weiß nicht was. Irgendwelche Ideen?