VB6, Bases de Datos, Conexiones x86 (32-bits) y Sistemas x64 (64-bits)

El mañana no puede esperar.

Ya llego a mi manos un equipo con 64bits, una famante estacion HP Z400 con 6GBytes de RAM, con XP Pro (W7 para cuando compre 20 cajas aspirinas)
Era cuestion de tiempo, una cosa que queria dejar para mas adelante pero que me ha sido imposible retrasarla mas tiempo.

El mercado nos empuja a utilizar maquinas cada vez mas potentes, los 4GBytes de RAM se estan quedando atras. Windows (mas bien Microsoft) aprieta tanto con sus cambios de tecnologia, que nos ahoga. Por contra nosotros continuamos programando con nuestro viejo Visual Basic 6 a 32bits.
Y es entonces cuando comienzan los problemas. Sistemas operativos de 64bits ejecutando aplicaciones VB6 de 32 (con algun que otro componente en 16bits).

Las siguientes lineas estan sacadas de otro blog.
Me parecio tan importante e interesante que no he podido resistirme y he tenido que ponerlo.
Si alguien ha sufrido este problema lo que yo lo entendera.
Tambien sirva esta entrada como agradecimiento a OMendoza por esta buena entrada en su blog (http://lveaf.blogspot.com/2009/11/windows-x64-y-drivers-odbc-oracle.html).

«Windows x64 y drivers ODBC (Oracle, Sybase, Excel, Access…)»
Instalas tu pequeña aplicación en un flamante Windows Xp x64.
Lo instalas con toda la ilusion pero cruzando los dedos porque sabes que tu aplicacion al ser de 32bits la debes instalar en «C:\Program Files (x86)\».
No te gusta, pero lo instalas ahi para que todo parezca mas profesional.

Tu aplicacion utiliza para conectarse a un viejisimos Oracle 8i un driver ODBC.
Vas a buscar el driver para configurarlo…
¿No encuentras tu controlador ODBC en Windows x64?
¿Pero si he instalado el cliente Oracle correctamente?
Pues eso mismo me ha pasado a mi, y tras intentar utilizar un software que utiliza los drivers ODBC de ORACLE a un Windows 2003 x64 (Supongo que todo lo que aquí explique es válido también para XP x64, Vista y W7) he conseguido no desquiciarme y no morir en el intento encontrando una bonita solución.

Explico un poquito:
Cuando accedes al «Panel de Control» y pulsas sobre «Herramientas Administrativas» –> «Origen de Datos / Data Sources (ODBC)» te encontrarás que en tu sistema x64 solo tienes el driver de “SQL Server” pues bien, esto es porque al acceder desde «Panel de Control» ejecutamos la herramienta ODBC x64, situada en “C:\WINDOWS\System32 \Odbcad32.exe” y los únicos drivers puramente x64 ODBC que se han desarrollado han sido estos (Oracle también tiene sus propietarios, compilados para x64, pero yo no dispondo de ello, uso un Oracle 8i).

Para ejecutar la herramienta ODBC x32 con todos los drivers ODBC x32 que hay en el sistema o que trae Windows por defecto, deberemos ejecutar la herramienta: “C:\WINDOWS\SysWOW64\Odbcad32.exe”.
Con esto la mayoría de vuestros problemas se verán solucionados.

Pero ahi no queda la cosa, si como yo, lo que pretendes es utilizar la librería de Oracle, aún no ha termina la lucha.
Resulta que Oracle envía el PATH de la aplicación que está realizando la conexión parametrizado con paréntesis, por lo que si la aplicación está instalada en el “C:\Program Files (x86)\” nunca conseguirás conectar dado que el servidor ve un error de sintaxis.
Así pues, la solución al error que probablemente te aparecerá («ERROR [HY000] [Oracle][ODBC][Ora]ORA-06413: Connection not open.») es simple y se trata de instalar todo software implicado en la conexión Oracle fuera de la carpeta “C:\Program Files (x86)\” (y ninguna otra con paréntesis) y como por arte de magia, todo volverá a funcionar.

Y para terminar, un apunte:
Todo lo que configures en x32 y x64 será compatible y accesible desde software x64 pero lo que configures en x64 no será accesible desde x32 para este únicamente serán validas las configuraciones con drivers x32.

Por tanto, para mis nuevas aplicacion VB6, en sistemas de x64, utilizare como directorio de instalacion «C:\Rob_Programs\»

Nuevamente gracias a OMendoza.
(http://lveaf.blogspot.com/2009/11/windows-x64-y-drivers-odbc-oracle.html).

Acerca de Robert Ale
Soy yo un simple tipo que quiere estar en la red... aunque no se si lo conseguiré algún día...

5 Responses to VB6, Bases de Datos, Conexiones x86 (32-bits) y Sistemas x64 (64-bits)

  1. Felipe says:

    Amigo gracias por la información, ha sido realmente valiosa para mi, yo tambien tengo una aplicacion de 32bits, que no conectaba con la base de datos, gracias a tu dato recurri al ejecutable “C:\WINDOWS\SysWOW64\Odbcad32.exe” y lo solucione!
    Gracias desde Lima-Perú.

  2. javier says:

    solo me sale los controladores de sqlserver y sqlserver native client …. no hay otros controladores ,, y necesito conectar con oracle 10g

    • Robert Ale says:

      Hola!
      Muy cierto, eso es lo que sucede.

      La solucion:
      Localiza y ejecutar «c:\Windows\System32\odbcad32.exe»
      Y con este programa si que podras buscar lo que necesitas.

      Saludos y muchas gracias por leer el blog!
      Robert

  3. ads says:

    Gracias por este post!

Replica a Felipe Cancelar la respuesta