2013-10-30 17 views
5

Microsoft.ACE.OLEDB.12.0 'Anbieter ist nicht auf dem lokalen Computer registriert.Herstellen einer Verbindung mit MS Access

und

Microsoft.JET.OLEDB.4.0' Provider auf dem lokalen Computer nicht registriert.

sind beide Fehler für mich. Ich habe beide versucht, während ich versucht habe, eine Access-Verbindung herzustellen. Ich bin mir nicht sicher, was ich noch tun soll.

Ich habe 32-Bit-Büro auf einer 64-Bit-Maschine. Ich habe Lösungen gefunden, bei denen gesagt wurde, dass sie die Access Database Engine installieren sollen, aber ich werde nicht 64 Bit mit 32 Bit Office installieren. Eine andere Quelle erwähnt, um dies zu umgehen, können Sie in die Befehlszeile gehen und tun $> AccessDatabaseEngine_X64.exe /passive aber passiv wird nicht als ein Befehl erkannt.

Ich fand eine andere mögliche Lösung, die Office Systemtreiber und Komponenten herunterladen, dann fügen Sie die Access-Datenbank als Quelle, aber das hat auch nicht funktioniert. Mir gehen die Ideen aus, es würde sehr geschätzt werden, wenn jemand helfen könnte.

Links zu Artikeln, die ich bin auf:

+3

Versuchen 32-Bit-Prozess angezeigt werden soll. – SLaks

+0

Ja, ich würde das auch versuchen –

+0

Wie machst du das? –

Antwort

2

Wenn Sie installieren müssen habe schon 32-bi Wenn Office installiert ist, stecken Sie ziemlich fest in der 32-Bit-Version der Access Database Engine (a.k.a. "AS"). Wie Sie herausgefunden haben, gibt es angeblich eine Möglichkeit, 64-Bit-ACE auf einer Maschine zu erzwingen, auf der bereits 32-Bit-Office-Komponenten installiert sind, aber persönlich würde ich nicht "dorthin gehen".

Also müssen Sie Ihr C# -Projekt so konfigurieren, dass es als 32-Bit ausgeführt wird. Sie können dies tun, indem Platform: x86 auf der Registerkarte Erstellen des Projektes Eigenschaften wählen.

Platform.png

(Das Screenshot auf einer 32-Bit virtuelle Maschine genommen wurde, so dass die Standardkonfiguration war bereits 32-Bit Der Standard auf 64-Bit-Maschinen Einstellung sollte "Any CPU").

Um die Umwelt zu überprüfen sein, in dem der Prozess, Sie

String.Format("I am running as {0}-bit.", IntPtr.Size * 8) 

zum Beispiel läuft, in einem Windows Forms-Anwendung verwenden können cou ld Verwendung

MessageBox.Show(String.Format("I am running as {0}-bit.", IntPtr.Size * 8)); 

, die als

I am running as 32-bit. 
+0

Das Problem besteht immer noch :( –

+0

@JohnSmith Ich habe meine Antwort mit Code aktualisiert, um die Umgebung zu verifizieren, in der der Prozess läuft. Bitte bestätigen Sie, dass Ihre App in der Tat als 32-Bit läuft. –

+0

Ja, es war immer noch in 64 bauen Danke für die Hilfe, es hat jetzt funktioniert –

Verwandte Themen