Acerca de:

Este blog contiene los códigos, ejemplos y bases de datos que he usado cuando aprendía acerca de algún tema específico. En lugar de borrarlos (una vez dominado ya el tema), he decidido publicarlos :)

miércoles, 20 de junio de 2012

VB6 error: no se pudo encontrar el archivo ISAM instalable

Me conectaba a una base de datos en Access 2003 usando un objeto ADODB.Connection llamado miDB, y un Recordset llamado miRS. Luego cerraba ambas conexiones haciendo:

If miDB.State <> adStateClosed Then miDB.Close
If miRS.State <> adStateClosed Then miRS.Close

miDB.Open miConnectionStringaDSN
miRS.Open "select * from Tabla", miDB

La propiedad State de ambas variables me dice si están cerradas o abiertas.

En resumen, una vez cerrada la conexión a la base de datos en Access, conectaba miDB a otra base de datos, a través de un DSN (ya creado mediante ODBC usando el aplicativo odbcad32.exe del Windows) y usando el formato de cadena de conexión para System DSN de la web de ConnectionStrings.

Y entonces me saltaba este error:


El mensaje es: "Error 80004005 en tiempo de ejecución: no se pudo encontrar el archivo ISAM instalable."

Parecía que me faltaba instalar algo, pero cuando realizaba primero la conexión por DSN (sin conectar miDB ó miRS a ninguna base de datos con anterioridad) la aplicación funcionaba de maravilla.

Deduje que no era problemas de instalación. Cuando conectaba miDB y miRS a una base de datos, cerraba ambos objetos e intentaba abrir una nueva conexión a DSN (¡y esto sólo ocurría al conectar por DSN!), "algo" se quedaba bloqueando un archivo, en algún lugar, y como la nueva conexión por DSN no podía abrirlo, consideraba que el archivo no existía y me lanzaba el error.

Entonces cambié mi código a:

If miDB.State <> adStateClosed Then miDB.Close
If miRS.State <> adStateClosed Then miRS.Close

Set miDB = Nothing
Set miRS = Nothing
Set miDB = New Connection
Set miRS = New Recordset

miDB.Open miConnectionStringaDSN
miRS.Open "select * from Tabla", miDB

Y resolví el problema, ya no aparece el error de ISAM instalable, y pude conectarme a mi DSN sin más inconvenientes, pues al anular ambos objetos (miDB y miRS) destruyo cualquier enlace que quede flotando, en algún lugar, perdido en las entrañas de mi Windows.