Skip to main content

How to troubleshoot MSAccess OleDb under Windows 7 64 bits

If you had a C# application with MS Access Database that did compile under Vista 32 bits with this connection string in app.config:

[%--[configuration> [configsections> [/configsections> [connectionstrings> [add name="MyConnectionString" connectionstring="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\mydb.mdb" providername="System.Data.OleDb"> [/add> [/connectionstrings--%>

You bought a brand new PC with Windows 7 64 bits and bad surprise when building your program again you got this dreadfull message error:

Microsoft.Jet.OLEDB.4.0 provider is not registered on the local machine

[%--using (OleDbConnection con = new OleDbConnection()) { ConnectionStringSettings connectionStringSettings = ConfigurationManager.ConnectionStrings["MyConnectionString"]; con.ConnectionString = connectionStringSettings; con.Open();--%>

No panic, you just have to change the Platform Target in Visual Studio Settings | Build tab to x86. Problem is for Visual Studio Express because there is unfortunaly no such options even in “advanced” button.

Nevertheless you can edit your visual studio c# project file (.csproj) and put this snippet:



[%--[propertygroup condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">--%>

This should solve the problem !

Comments: Replace [ with <


Popular posts from this blog

Call User-defined Function on Linked Server :SQL Server

If you try to invoke a user-defined function (UDF) through a linked server in SQL Server by using a "four-part naming" convention (server.database.dbo.Function), you may receive error message.  The reason is User-defined function calls inside a four-part linked server query are not supported in SQL Server. Thats why error message indicates that the syntax of a Transact-SQL statement is incorrect.  To work around this problem, use the Openquery function instead of the four-part naming convention. For example, instead of the following query Select * from Linked_Server.database.dbo.Function(10) run a query with the Openquery function: Select * from Openquery(Linked_Server,'select database.dbo.Function(10)') If the user-defined function takes variable or scalar parameters, you can use the sp_executesql stored procedure to avoid this behavior.  For example: exec Linked_Server.database.dbo.sp_executesql N'SELECT database.dbo.Function(@input)',N'@input

Installing the FrontPage Server Extensions on IIS 7.0

As most people that have installed IIS 7.0 on Windows Vista and Windows Server© 2008 have realized, there are no options to install the FrontPage Server Extensions, leaving only two ways to edit your Web site if it is hosted on a Windows Vista or Windows Server 2008 computer: Edit the Web site locally by using the file system. Use FTP to upload your files to a remote Windows Vista or Windows Server 2008 computer. Microsoft realizes that the FrontPage Server Extensions are essential to many Web hosting companies and developers, and has worked with Ready-to-Run Software to release a version of the FrontPage 2002 Server Extensions (FPSE 2002) for Windows Vista and Windows Server 2008. This version of FPSE 2002 is available for x86 (32-bit) and x64 (64-bit) Windows Vista and Windows Server 2008 as a separate download for IIS 7.0, and you can download this version by clicking the following URL: FrontPage 2002 Server Extensions for IIS 7.0 Notes: The FrontPage 2002 Server Extensions (

Pass multiple complex objects to Web API action

Working with ASP.NET Web API, the most unexpected thing is the limited support of POST data values to simple ApiController methods. When a parameter has [FromBody], Web API uses the Content-Type header to select a formatter. At most one parameter is allowed to read from the message body. The reason for this rule is that the request body might be stored in a non-buffered stream that can only be read once. A simple principle, you can send any content in HTTP request, it only need to be serializable into a string. So, it could be multiple JSON object. In this example, the content type is "application/json" and the request body is a raw JSON string (not a JSON object). Here I found a workaround to pass multiple complex objects (using the above principle) from jquery to a WEB API using JObject , and then cast back to your required specific object type in api controller. This objects provides a concrete type specifically designed for working with JSON. var customer = { &quo