Error al abrir bases de datos de Access (objeto COM de 32 bits) desde Visual Studio 2008 en Windows x64

Cuando se ejecuta un proyecto de Visual Studio 2008 en una plataforma Windows 7 de 64 bits, si el proyecto contiene alguna referencia a componentes COM de 32 bits, como pasa por ejemplo cuando el proyecto se conecta con una base de datos de Microsoft Access, suele haber un error que impide que el proyecto se ejecute correctamente.

Esto se debe a que la mayoría de los componentes COM de 32 bits no funcionan bien como procesos de 64 bits en plataformas de 64 bits aunque sí pueden funcionar como procesos de 32 bits en plataformas de 64 bits. Las aplicaciones de VB y C# que hacen referencia a alguno de esos componentes COM de 32 bits no pueden funcionar pues intentan hacerlo como procesos de 64 bits.

Los compiladores de VB y C# en Visual Studio 2008 utilizan la propiedad platform target para determinar si la aplicación ha de correr como proceso de 32 o de 64 bits. Por defecto esta propiedad tiene asignado el valor "AnyCPU" lo que determina que se ejecute de acuerdo al tipo de plataforma (Windows 7 de 32 o de 64).

Para resolver este problema la propiedad platform target ha de tener el valor "X86″ en los proyectos VB y C# de este tipo. Para ello hay que:

Proyectos VB

– botón dcho. en el proyecto en el Explorador de Soluciones > Propiedades
– pestaña Compilar
– botón Opciones avanzadas de Compilación
– propiedad Target CPU en X86.

Proyectos C#

– botón dcho. en el proyecto en el Explorador de Soluciones > Propiedades
– pestaña Compilar
– propiedad Target CPU en X86.

Proyectos de las versiones Express

Metodo1
Hay que modificar el archivo de proyecto .csproj o .vbproj, se puede hacer desde el propio IDE de Visual Studio o desde editores de texto o XML buscando la primera aparición de la sección PropertyGroup y añadiendo bajo ella esta línea:
<PlatformTarget>x86</PlatformTarget>
Se abre de nuevo el proyecto o solución y se continúa con el trabajo.

Metodo2
Con el proyecto abierto, seguimos los siguientes pasos:
– menu "Herramientas"
– Opciones
– Proyectos y soluciones
– General
– Marcamos "Mostrar configuraciones de compilación avanzadas"
– Aceptar
– Menu "Generar"
– Administrador de configuración
– En "Plataformas de soluciones activas", seleccionamos "Nueva"
– En "Escriba o seleccione la nueva plataforma", seleccione "x86″
– Aceptar
– Cerrar

5 comentarios en “Error al abrir bases de datos de Access (objeto COM de 32 bits) desde Visual Studio 2008 en Windows x64

  1. ING. Oscar Martinez
    Hola estoy generando un proyecto en c# express 8 y te comento que mi archivo .csproj no contiene nada solo:

    y lo demas en blanco te pido ayuda

  2. Disculpa tengo un problema con la conexion a una base de datos, hago la conexion tanto con sql 2008 y acces y en ambos me aparece este error
    "No se controlo COMException" La operacion no esta permitida si el objeto esta cerrado.——
    Esta aplicacion la corro en visual basic 2008 en Windows 7 a x64 pero si corro la misma en mi pc de escritorio con XP x86, = mente en visual o acces si me corre correctamente, espero me puedas ayudar. Gracias

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*