Falla Conectividadad con OLEDB ACCESS

04/05/2009 - 17:30 por Irak | Informe spam
Hola, buen día, quisiera saber que es lo que está sucediendo con lo siguiente:

Tengo Windows Vista 64bits, Visual Studio 2008. Creo una aplicación para
conectarme a una base de datos de Access pero cuando la aplicación ejecuta el
comando Cn.Open(); se produce un error "silencioso" es decir, que no muestra
ningun mensaje de excepción y solo sale del procedimiento donde está
declarada ésta instrucción. Cuando verifico el estado actual de mi variable
de conexión (Cn), resulta que éste sigue en "Closed", es decir, nunca se
abrió.

La cadena de conexión es la misma que genera Visual Studio en el archivo
app.config. y la he probado en otra instancia de Visual Studio en un ambiente
de Windows XP SP2 y este ha resultado positivo. ¿Cómo es posible que Visual
Studio si pueda conectarse a mi base de datos de Access y consultar sus
tablas y desde programación yo no pueda, siendo que creo que Visual Studio
utiliza el mismo proveedor ¿no? y ¿cuál podría ser la solución? ¿tengo que
descargar algun archivo para 64bits ? no sé

Gracias por tu asistencia
 

Leer las respuestas

#1 Alberto Poblacion
04/05/2009 - 22:15 | Informe spam
"Irak" wrote in message
news:
Tengo Windows Vista 64bits, Visual Studio 2008. Creo una aplicación para
conectarme a una base de datos de Access pero cuando la aplicación ejecuta
el
comando Cn.Open(); se produce un error "silencioso" es decir, que no
muestra
ningun mensaje de excepción y solo sale del procedimiento donde está
declarada ésta instrucción. Cuando verifico el estado actual de mi
variable
de conexión (Cn), resulta que éste sigue en "Closed", es decir, nunca se
abrió.

La cadena de conexión es la misma que genera Visual Studio en el archivo
app.config. y la he probado en otra instancia de Visual Studio en un
ambiente
de Windows XP SP2 y este ha resultado positivo. ¿Cómo es posible que
Visual
Studio si pueda conectarse a mi base de datos de Access y consultar sus
tablas y desde programación yo no pueda, siendo que creo que Visual Studio
utiliza el mismo proveedor ¿no? y ¿cuál podría ser la solución? ¿tengo que
descargar algun archivo para 64bits ? no sé



El problema es que no existen drivers para el JET Engine (el motor de
Access) en 64 bits, sólo en 32 bits. Visual Studio puede conectarse porque
rueda en 32 bits (Windows-on-Windows) aunque el sistema operativo sea de 64
bits, y por eso "monta" la dll de 32 bits con los drivers de Access y puede
acceder.
Pero si compilas tu programa de .Net con la opción predetermnada ("Any
CPU"), se ejecuta automáticamente en 64 bits si el sistema operativo es de
64 bits, y entonces no funciona porque no encuentra la correspondiente dll
para el JET.

El remedio es cambiar las opciones de compilación del proyecto, de forma
que en lugar de "Any CPU", se compile para "x86". De esta forma, el
ejecutable rueda siempre en 32 bits y puede acceder a los .mdb.

Preguntas similares