J’ai une solution Visual Studio 2008 avec deux projets (un projet Word-Template et une application console VB.Net à tester). Les deux projets font référence à un projet de firebase database qui ouvre une connexion à un fichier de firebase database MS-Access 2007 et contient des références à System.Data.OleDb. Dans le projet de firebase database, j’ai une fonction qui récupère un tableau de données comme suit
private class AdminDatabase ' stores the connection ssortingng which is set in the New() method dim strAdminConnection as ssortingng public sub New() ... adminName = dlgopen.FileName conAdminDB = New OleDbConnection conAdminDB.ConnectionSsortingng = "Data Source='" + adminName + "';" + _ "Provider=Microsoft.ACE.OLEDB.12.0" ' store the connection ssortingng in strAdminConnection strAdminConnection = conAdminDB.ConnectionSsortingng.ToSsortingng() My.Settings.SetUserOverride("AdminConnectionSsortingng", strAdminConnection) ... End Sub ' resortingeves data from the database Public Function getDataTable(ByVal sqlStatement As Ssortingng) As DataTable Dim ds As New DataSet Dim dt As New DataTable Dim da As New OleDbDataAdapter Dim localCon As New OleDbConnection localCon.ConnectionSsortingng = 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
Lorsque j’appelle cette fonction à partir de mon projet Word 2007 Template, tout fonctionne correctement. pas d’erreurs Mais quand je l’exécute depuis l’application de la console, il génère l’exception suivante
ex = {“Le fournisseur ‘Microsoft.ACE.OLEDB.12.0’ n’est pas enregistré sur la machine locale.”}
Les deux projets ont la même référence et l’application de la console a fonctionné lorsque je l’ai écrite pour la première fois (il y a quelque temps), mais maintenant elle a cessé de fonctionner. Je dois manquer quelque chose mais je ne sais pas quoi. Des idées?
J’ai un programme Visual Basic avec Visual Studio 2008 qui utilise une firebase database Access 2007 et recevait la même erreur. J’ai trouvé des threads qui conseillaient de changer la configuration de compilation avancée en x86 dans les propriétés des programmes si vous exécutiez un système 64 bits. Jusqu’à présent, je n’ai eu aucun problème avec mon programme depuis.
Fondamentalement, si vous êtes sur un ordinateur 64 bits, IIS 7 ne fournit pas (par défaut) d’applications 32 bits sur lesquelles le moteur de firebase database fonctionne. Alors, voici exactement ce que vous faites:
1) Assurez-vous que le moteur de firebase database 2007 est installé. Vous pouvez le télécharger à l’ adresse suivante : http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en
2) ouvrez le gestionnaire IIS7 et ouvrez la zone Pools d’applications. Dans la barre latérale droite, vous verrez une option indiquant “Définir les valeurs par défaut du pool d’applications”. Cliquez dessus et une fenêtre apparaîtra avec les options.
3) le second champ, qui indique “Activer les applications 32 bits” est probablement défini sur FALSE par défaut. Cliquez simplement sur “false” pour le changer en “true”.
4) Redémarrez votre pool d’applications (vous pouvez le faire en appuyant sur RECYCLE au lieu de STOP, puis sur START, qui fonctionnera également).
5) fait, et votre message d’erreur disparaîtra.
Est-ce que vous utilisez un système 64 bits avec la firebase database exécutant 32 bits mais la console exécutant 64 bits? Il n’y a pas de pilotes MS Access exécutant 64 bits et signalant une erreur identique à celle signalée.
Solution:
C’est tout! Merci Arjun Paudel pour le lien. Voici la solution disponible sur XNA Creator Club Online. C’est par Stephen Styrchak.
L’erreur suivante me porte à croire que vous comstackz pour 64 bits:
Le fournisseur ‘Microsoft .ACE.OELDB.12.0’ n’est pas enregistré sur la machine locale
Je n’ai pas d’édition express mais les étapes suivantes sont-elles valides en 2008 express?
http://forums.xna.com/forums/t/4377.aspx#22601
http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/ed374d4f-5677-41cb-bfe0-198e68810805/?prof=required
– Arjun Paudel
Dans VC# Express
, cette propriété est manquante, mais vous pouvez toujours créer une configuration x86 si vous savez où chercher.
Cela ressemble à une longue liste d’étapes, mais une fois que vous savez où sont ces choses, c’est beaucoup plus facile. Quiconque possède uniquement VC# Express
trouvera probablement cela utile. Une fois que vous en saurez sur Configuration Manager
, il sera beaucoup plus intuitif la prochaine fois.
1.Dans VC # Express 2005, allez dans Tools -> Options
.
2.Dans le coin inférieur gauche de la boîte de dialog Options, cochez la case "Show all settings"
.
3.Dans l’arborescence de gauche, sélectionnez "Projects and Solutions"
.
4.Dans les options à droite, cochez la case "Show advanced build configuraions."
5.Cliquez sur OK
.
6.Aller à Build -> Configuration Manager
…
7.Dans la colonne Plate-forme située à côté de votre projet, cliquez sur la liste déroulante et sélectionnez "
.
8.Dans le "New platform" setting, choose "x86"
.
9.Cliquez sur OK
.
10.Cliquez sur Close
.
Là, vous avez maintenant une configuration x86! C’est de la tarte! 🙂
Je recommande également d’utiliser Configuration Manager
pour supprimer la plate-forme Any CPU. Vous ne le voulez vraiment pas si vous avez des dépendances sur des DLL natives 32 bits (même des dépendances indirectes).
Stephen Styrchak | Développeur XNA Game Studio http://forums.xna.com/forums/p/4377/22601.aspx#22601
Je pensais que je ferais écho parce que j’ai trouvé cette question face à un contexte légèrement différent du problème et j’ai pensé que cela pourrait aider d’autres âmes tourmentées à l’avenir:
J’avais une application ASP.NET hébergée sur IIS 7.0 s’exécutant sur Windows Server 2008 64 bits.
Comme IIS contrôle le bitness du processus, la solution dans mon cas était de définir le paramètre Enable32bitAppOnWin64 sur true: http://blogs.msdn.com/vijaysk/archive/2009/03/06/iis-7-tip- 2-vous-pouvez-maintenant-exécuter-32-bit-et-64-bit-applications-sur-le-même-serveur.aspx
Il fonctionne légèrement différemment dans IIS 6.0 (vous ne pouvez pas définir Enable32bitAppOnWin64 au niveau du pool d’applications) mfr = true
J’ai le même problème. J’essaie d’installer Office 2010 64 bits sur Windows 7 64 bits, puis installez 2007 Office System Driver: composants de connectivité de données.
Après cela, Visual Studio 2008 peut ouvrir une connexion à un fichier de firebase database MS-Access 2007.
Voir mon post sur un thread similaire à Stack Exchange https://stackoverflow.com/a/21455677/1368849
J’ai installé la version 15 et non 12, que j’ai découverte en exécutant ce code PowerShell …
(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION
… ce qui m’a donné ce résultat (j’ai supprimé d’autres sources de données pour des raisons de concision) …
SOURCES_NAME SOURCES_DESCRIPTION ------------ ------------------- Microsoft.ACE.OLEDB.15.0 Microsoft Office 15.0 Access Database Engine OLE DB Provider
J’ai la même erreur sur une famille Windows Vista 64 bits entièrement mise à jour avec une application .NET que j’ai compilé en 32 bits seulement – le programme est installé dans le dossier programx86 sur des machines 64 bits. Il échoue avec ce message d’erreur même lorsque le fournisseur de firebase database d’access 2007 est installé, avec / wiothout le SP2 du même installé, IIS installé et le pool d’applications défini pour le support d’applications 32bits …
J’ai basculé mon application vers ACE OLE DB.12.0 car JET4.0 échouait sur les machines 64 bits – et ce n’est pas mieux: – Le thread le plus prometteur que j’ai trouvé est le suivant:
http://ellisweb.net/2010/01/connecting-to-excel-and-access-files-using-net-on-a-64-bit-server/
mais lorsque vous essayez d’installer la version bêta «Pilote de système Office 2010: composants de connectivité de données» 64 bits, cela signifie que vous ne pouvez pas installer la version 64 bits sans désinstaller toutes les applications bureautiques 32 bits et installer la version 32 bits de 2010. Pilote bêta du système Office: Les composants de connectivité de données ne résolvent pas le problème initial, même avec “Microsoft.ACE.OLEDB.12.0” comme fournisseur au lieu de “Microsoft.ACE.OLEDB.14.0” recommandé par cette page (et par d’autres).
Ma prochaine tentative sera de suivre ce post:
Le problème est dû à la mauvaise version de OLEDB32.DLL et OLEDB32r.DLL enregistrés sur le serveur. Si les versions 64 bits sont enregistrées, elles doivent être désinscrites, puis les versions 32 bits enregistrées. Pour résoudre ce problème, annulez l’enregistrement des versions situées dans% Program Files% / Fichiers communs / Système / OLE DB. Enregistrez ensuite les versions sur le même chemin mais dans le répertoire% Program Files (x86)%.
Quelqu’un d’autre a-t-il eu autant de problèmes avec les fournisseurs JET4.0 et OLEDB ACE sur les machines 64 bits? Quelqu’un at-il trouvé une solution si aucun des autres ne fonctionne?
Je suppose que si vous exécutez un système 64 bits avec une firebase database 32 bits et que vous essayez d’exécuter une console 64 bits, les packages suivants doivent être installés sur la machine.
Remarque: l’ordre semble avoir de l’importance – donc, si vous avez déjà installé quelque chose, désinstallez et suivez les étapes ci-dessus.