locked
Microsoft.ACE.OLEDB.Provider.12.0 Not registered RRS feed

  • Question

  • I’m testing my app on a Win XP machine where I have an exact same VS 2008 installed. I took the “working app” from my Win 8 PC copied it to a flash drive and tried  to run the app from the flash drive on the WIN XP PC. I got this weird error,  “Microsoft.ACE.OLEDB.12.0. Provider not registered on local machine.”

    From past experience I know that I had to set the Target CPU in the Advanced Compile Options to “x86” and it would recognize the provider.

    What I don’t understand is why is this error is showing up when all I did was make a direct copy of the source code from a working project on a Win 8 PC to a flash drive so I could run it on a Win XP PC that has the exact same VS 2008 development suite installed.

    Thanks,

    MRM256

    Friday, February 14, 2014 8:12 PM

Answers

  • I had to download an AccessDatabaseEngine installation program and installed it on my XP machine. It works, but  I thought the reason to have the .NET framework was all you had to do is access the proper Namespace and your database connections and retrievals were taken care of.
    I want this app to be portable from PC to PC. I sure don’t think it’s prudent to have to install the DB engine on every PC I might use. Not efficient.
    Did I miss something?

    The ACE thing is outside the remit of the .NET framework. However, if you distribute your program via an installer, you could be able to make the installer install the AccessDatabaseEngine for you. I think that the article How do I deploy an application and its prerequisites? could have enough information to enable you to do that.

    HTH,

    Andrew

    • Marked as answer by Carl Cai Friday, February 21, 2014 10:06 AM
    Friday, February 14, 2014 10:57 PM
  • Hi Andrew,

    1st Question:

    Why is the ACE thing outside the remit of the .NET framework? I thought "managed" code was to have everything a developer might need at his finger tips.

    My Point: Since the Framework is on ALL Microsoft PCs I just need the .EXE on a frash drive and it should run. I have already made a SQL Server Data entry tool that doesn't need a SQL Server DB engine to run, because it has the proper namespaces included. It also runs directly off the flash drive.

    Most developers like to use sometype of database to store fluid data in their applications. Therefore, database accessibility is of paramount importance. In theory when I add the Namespace: System.Data.Oledb to my application. There should be no trouble accessing a MS-Access DB because it is an OLEDB database.

    Am I making any sence?


    MRM256

    Sorry to burst your bubble, but no - that's not how it works. If you need additional assemblies to run something, that's on you to provide.

    I'm not really a "database guy", but that's one reason why (when I was using them) I switched from Access to SQL CE. The "CE" is "Compact Edition". It's lightweight in that you only need to copy seven .dll files (plus one which is in dotNET but isn't normally copied to the output) and your users have complete access to using your database just like you designed it.

    I've opted to go an entirely other route (no databases, but most of the functionality of one), but that's another story.

    Back to this and your issue, if you don't have the runtime installed, it won't run.


    Please call me Frank :)

    • Marked as answer by Carl Cai Friday, February 21, 2014 10:06 AM
    Saturday, February 15, 2014 2:33 PM

All replies

  • probably because the xp pc is 32 bit + the app you created in win 8 was setup for any cpu + it needs to be x86

    thanks for any help

    Friday, February 14, 2014 8:33 PM
  • Are you sure the Microsoft Access Database Engine 2010 Redistributable is installed on the Win XP machine? Having VS2008 installed does not imply that that Microsoft.ACE.OLEDB.12.0 is installed.

    --
    Andrew

    Friday, February 14, 2014 9:06 PM
  • I had to download an AccessDatabaseEngine installation program and installed it on my XP machine. It works, but  I thought the reason to have the .NET framework was all you had to do is access the proper Namespace and your database connections and retrievals were taken care of.
    I want this app to be portable from PC to PC. I sure don’t think it’s prudent to have to install the DB engine on every PC I might use. Not efficient.
    Did I miss something?
    MRM256

    MRM256

    Friday, February 14, 2014 10:25 PM
  • I had to download an AccessDatabaseEngine installation program and installed it on my XP machine. It works, but  I thought the reason to have the .NET framework was all you had to do is access the proper Namespace and your database connections and retrievals were taken care of.
    I want this app to be portable from PC to PC. I sure don’t think it’s prudent to have to install the DB engine on every PC I might use. Not efficient.
    Did I miss something?

    The ACE thing is outside the remit of the .NET framework. However, if you distribute your program via an installer, you could be able to make the installer install the AccessDatabaseEngine for you. I think that the article How do I deploy an application and its prerequisites? could have enough information to enable you to do that.

    HTH,

    Andrew

    • Marked as answer by Carl Cai Friday, February 21, 2014 10:06 AM
    Friday, February 14, 2014 10:57 PM
  • Hi Andrew,

    1st Question:

    Why is the ACE thing outside the remit of the .NET framework? I thought "managed" code was to have everything a developer might need at his finger tips.

    My Point: Since the Framework is on ALL Microsoft PCs I just need the .EXE on a frash drive and it should run. I have already made a SQL Server Data entry tool that doesn't need a SQL Server DB engine to run, because it has the proper namespaces included. It also runs directly off the flash drive.

    Most developers like to use sometype of database to store fluid data in their applications. Therefore, database accessibility is of paramount importance. In theory when I add the Namespace: System.Data.Oledb to my application. There should be no trouble accessing a MS-Access DB because it is an OLEDB database.

    Am I making any sence?


    MRM256

    Saturday, February 15, 2014 2:12 PM
  • Hi Andrew,

    1st Question:

    Why is the ACE thing outside the remit of the .NET framework? I thought "managed" code was to have everything a developer might need at his finger tips.

    My Point: Since the Framework is on ALL Microsoft PCs I just need the .EXE on a frash drive and it should run. I have already made a SQL Server Data entry tool that doesn't need a SQL Server DB engine to run, because it has the proper namespaces included. It also runs directly off the flash drive.

    Most developers like to use sometype of database to store fluid data in their applications. Therefore, database accessibility is of paramount importance. In theory when I add the Namespace: System.Data.Oledb to my application. There should be no trouble accessing a MS-Access DB because it is an OLEDB database.

    Am I making any sence?


    MRM256

    Sorry to burst your bubble, but no - that's not how it works. If you need additional assemblies to run something, that's on you to provide.

    I'm not really a "database guy", but that's one reason why (when I was using them) I switched from Access to SQL CE. The "CE" is "Compact Edition". It's lightweight in that you only need to copy seven .dll files (plus one which is in dotNET but isn't normally copied to the output) and your users have complete access to using your database just like you designed it.

    I've opted to go an entirely other route (no databases, but most of the functionality of one), but that's another story.

    Back to this and your issue, if you don't have the runtime installed, it won't run.


    Please call me Frank :)

    • Marked as answer by Carl Cai Friday, February 21, 2014 10:06 AM
    Saturday, February 15, 2014 2:33 PM