Conectividad con Access desde Vista 64bits

04/05/2009 - 21:33 por Irak Rubio | 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 Open( ) del objeto connection; se produce un error "silencioso" es
decir, que no muestra ningun mensaje de excepción y solo sale del
procedimiento donde está se encuentra declarada mi instrucción sin terminar
de procesar las siguientes instrucciones y continúa con la ejecución del
programa. sin embargo, dado que no puedo conectarme todas las consultas me
devuelven cero registros, cuando verifico el estado actual de mi variable de
conexión (Cn), resulta que éste sigue en "Closed", es decir, nunca se
abrió. (La apertura de la conexión la realizo sin DataAdapter).

Considereando que mi cadena de conexión es correcta ya que la misma la he
probado en otra instancia de Visual Studio en un ambiente
de Windows XP SP2 y su resultado ha sido positivo, devolviendo los registros
esperados. ¿Cómo sería posible que Visual
Studio 2008 en Vista si pueda conectarse a mi base de datos de Access y
consultar sus tablas (cuando utilizo el administrador de conexiones con la
función Previev data o bien abriendo una tabla desde el administrador de
servidores) pero en el ambiente de programación no se pueda, ya que tengo
entendido que Visual Studio
utiliza el mismo proveedor OLEDB ¿no?

¿cuál podría ser la solución?

Estoy empleando en todo momento el objeto OLEDB.

Saludos y gracias por tu tiempo

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
04/05/2009 - 22:10 | Informe spam
"Irak Rubio" wrote in message
news:
[...] ¿Cómo sería posible que Visual
Studio 2008 en Vista si pueda conectarse a mi base de datos de Access y
consultar sus tablas (cuando utilizo el administrador de conexiones con la
función Previev data o bien abriendo una tabla desde el administrador de
servidores) pero en el ambiente de programación no se pueda, ya que tengo
entendido que Visual Studio
utiliza el mismo proveedor OLEDB ¿no?



No.
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 da un error 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.
Respuesta Responder a este mensaje
#2 Irak Rubio
05/05/2009 - 00:04 | Informe spam
Gracias Alberto, me quedó muy claro
Emn otro post comentaba acerca de que si la gente de Microsoft piensa
distribuir el motor JET para 64 bits en un futuro??

Un saludo.

"Alberto Poblacion" wrote:

"Irak Rubio" wrote in message
news:
> [...] ¿Cómo sería posible que Visual
> Studio 2008 en Vista si pueda conectarse a mi base de datos de Access y
> consultar sus tablas (cuando utilizo el administrador de conexiones con la
> función Previev data o bien abriendo una tabla desde el administrador de
> servidores) pero en el ambiente de programación no se pueda, ya que tengo
> entendido que Visual Studio
> utiliza el mismo proveedor OLEDB ¿no?

No.
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 da un error 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.



Respuesta Responder a este mensaje
#3 Alberto Poblacion
05/05/2009 - 08:39 | Informe spam
"Irak Rubio" wrote in message
news:
Gracias Alberto, me quedó muy claro
Emn otro post comentaba acerca de que si la gente de Microsoft piensa
distribuir el motor JET para 64 bits en un futuro??



La información que yo tengo es que no, no tienen planeado sacarlo en 64
bits.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida