Resolver problemas de referencia en una base de datos de Access

Número KB original: 310803

Resumen

En este artículo se describen los problemas relacionados con el uso de referencias en una base de datos de Access.

Comprender los errores de referencia requiere comprender cómo se hace referencia a las bibliotecas en una base de datos de Access y qué se necesita para instalar una base de datos en un equipo de destino sin romper estas referencias. Este artículo es un resumen de los siguientes temas:

  • Visualización de referencias a bases de datos de Access
  • Resolución de referencias de Microsoft Visual Basic para Aplicaciones en Access
  • Comprensión de mensajes de error de referencia
  • Resolución de problemas de referencia en el equipo de desarrollo
  • Distribución de archivos de base de datos
  • Actualización de la lista de referencias
  • Distribución de archivos de base de datos que tienen controles ActiveX
  • Volver a registrar un archivo

Visualización de referencias a bases de datos de Access

Para ver las referencias de base de datos actuales:

  1. Abra la base de datos.
  2. Pulse ALT+F11 para iniciar el Editor de Visual Basic.
  3. En el menú Herramientas, haga clic en Referencias.

Resolución de referencias de Visual Basic en Access

Access carga el archivo pertinente (por ejemplo, una biblioteca de tipos, una de objetos o una de controles) para cada referencia, según la información que se muestra en el cuadro Referencias. Si Access no encuentra el archivo, ejecutará los siguientes procedimientos para localizar el archivo:

  1. Access comprueba si el archivo al que se hace referencia está cargado en la memoria.
  2. Si el archivo no está cargado en la memoria, Access tratará de comprobar que existe la clave del RegistroRefLibPaths. Si la clave existe, Access busca un valor con nombre que tenga el mismo nombre que la referencia. Si hay una coincidencia, Access carga la referencia de la ruta de acceso a la que apunta el valor con nombre.
  3. Luego, Access busca el archivo al que se hace referencia en las siguientes ubicaciones en este orden:
    1. La carpeta Aplicación (la ubicación del archivo Msaccess.exe).
    2. La carpeta actual que verá si hace clic en Abrir en el menú Archivo.
    3. La carpeta Windows o Winnt donde se ejecutan los archivos del sistema operativo.
    4. La carpeta Sistema dentro de la carpeta Windows o Winnt.
    5. Las carpetas de la variable de entorno PATH a las que el sistema operativo puede acceder directamente.
  4. Si Access no puede encontrar el archivo, se produce un error de referencia.

Comprensión de mensajes de error de referencia

Hay varios mensajes de error relacionados con un archivo que falta o con un archivo que tiene una versión diferente de la versión que se usa en la base de datos. En la mayoría de los casos, puede buscar en Microsoft Knowledge Base un artículo sobre el mensaje de error específico y, luego, resolver el error siguiendo las instrucciones del artículo. En algunos casos, un archivo de dependencia no coincide correctamente con el archivo principal.

La siguiente lista describe los mensajes de error de referencia que puede recibir. Pero, tenga en cuenta que la lista no incluye todos los mensajes de error de referencia posibles.

  • "Method MethodName of Object ObjectName Failed"

    Normalmente, puede recibir este mensaje de error si hay un problema con una biblioteca de tipos de programación, por ejemplo, un archivo de biblioteca de vínculos dinámicos (DLL) de objeto de acceso a datos (DAO) no válido. Puede buscar en Microsoft Knowledge Base artículos que describan las distintas formas de este mensaje de error.

  • "Función no está disponible en la expresión Uso"

    Puede recibir este mensaje de error si hay un problema con una biblioteca de tipos de programación o si el código no llama específicamente a la biblioteca correcta y el archivo aparece con una prioridad inferior en la lista de referencia que un archivo que contiene el mismo nombre de función, por ejemplo, si el código de DAO se usa con la biblioteca de ActiveX Data Objects (ADO) enumerada con una prioridad superior que la biblioteca de DAO. También puede recibir este mensaje de error si un formulario o un informe contiene un control ActiveX.

  • "No puede encontrar el proyecto o la biblioteca"

    Puede recibir este mensaje de error si Access no puede encontrar un archivo en la lista de referencia. A menudo, el archivo se marca como "Ausente" en el cuadro de diálogo Referencias. A veces, el archivo existe en el equipo de desarrollo, pero no en el equipo de destino.

  • "Variable no definida" o "Tipo definido por el usuario no definido"

    Puede recibir uno de estos mensajes de error si usa el Asistente para seguridad por usuarios para proteger una base de datos que haga referencia a bibliotecas que no sean las bibliotecas que se incluyen de forma predeterminada. Por ejemplo, las referencias a bibliotecas que existían en la base de datos no segura no se crean automáticamente en la nueva base de datos protegida.

  • "Error en tiempo de ejecución 5", "Llamada o argumento de procedimiento no válido", "El proyecto actual no hace referencia a la biblioteca que contiene este símbolo" o "El proyecto actual no hace referencia a la biblioteca que contiene este símbolo, por lo que el símbolo no está definido"

    Puede recibir uno de estos mensajes de error si hay una referencia a una base de datos, una biblioteca de tipos o una biblioteca de objetos marcada como Ausente.

  • "El componente ActiveX no puede crear el objeto"

    Este mensaje de error no significa necesariamente que un control ActiveX esté implicado. Por ejemplo, una posible causa es que el DAO, que es un componente ActiveX, no puede crear un objeto porque el servidor de automatización de DAO no se puede iniciar. Con frecuencia, la causa es que las DLL que proporcionan funciones a las que se hace referencia para el programa no están registradas o están registradas incorrectamente.

Resolución de problemas de referencia en el equipo de desarrollo

Crear una nueva base de datos en blanco y, luego, importar objetos desde otro archivo de base de datos puede provocar problemas de referencia si el código o los controles ActiveX se basan en referencias que no se incluyen de forma predeterminada en una base de datos. Las referencias predeterminadas para una base de datos de Access 2000 son:

  • Visual Basic para Aplicaciones
  • Biblioteca de objetos de Microsoft Access 9.0
  • Automatización OLE
  • Biblioteca de Microsoft ActiveX Data Objects (ADO) 2.1

Si el origen es otra base de datos de Access 2000, compruebe que las referencias coinciden. Si el origen es en una versión anterior de Access, DAO 3.5 o versiones anteriores probablemente esté en uso; pero, Access 2000 no proporciona DAO 3.5 de forma predeterminada. Trate de quitar la referencia a la biblioteca de ADO 2.1 (si existe) y de agregarla a la biblioteca de objetos de DAO 3.6.

Si ha convertido la base de datos desde una versión anterior de Access y la base de datos contiene una referencia al archivo Utility.mda, en la mayoría de los casos puede quitar esta referencia dado que las funciones que llama a esta referencia se incluyen en las referencias predeterminadas de Access 2000. Si hay referencias a versiones anteriores de DAO, también puede quitar estas referencias porque DAO 3.6 puede abordar estas funciones.

Para agregar una referencia a una biblioteca:

  1. Abra la base de datos.
  2. Pulse ALT+F11 para iniciar el Editor de Visual Basic.
  3. En el menú Herramientas, haga clic en Referencias.
  4. En Referencias disponibles, haga clic para activar la casilla situada junto al nombre de la biblioteca y, luego, haga clic en Aceptar.

Para quitar una referencia a una biblioteca:

  1. Abra la base de datos.
  2. Pulse ALT+F11 para iniciar el Editor de Visual Basic.
  3. En el menú Herramientas, haga clic en Referencias.
  4. En Referencias disponibles, haga clic para deseleccionar la casilla situada junto al nombre de la biblioteca y, luego, haga clic en Aceptar.

Distribución de archivos de base de datos

Existen dos métodos básicos de distribución de archivos de base de datos. Puede copiar el archivo desde el equipo de desarrollo al equipo de destino o puede usar el Asistente para paquetes e implementación para crear un paquete de instalación.

Si copia el archivo del equipo de desarrollo en el equipo de destino, solo se copiará el archivo de base de datos. Debe asegurarse manualmente de que todos los archivos que aparecen en la lista de referencia están disponibles, en el nivel de versión correcto y en la misma ubicación relativa en el equipo de destino y en el equipo de desarrollo.

Al desarrollar aplicaciones en tiempo de ejecución en Access, tenga en cuenta que algunos archivos del sistema operativo deben distribuirse con la aplicación en tiempo de ejecución. El empaquetado de estos archivos lo realiza automáticamente el componente Asistente para paquetes e implementación de Microsoft Office 2000 Developer. A veces, las versiones de los archivos que se incluyen dependen de otras aplicaciones instaladas en el equipo de desarrollo y que podrían haber modificado los archivos del sistema operativo.

Siguiendo ciertas directrices, normalmente se asegurará de que las versiones de los archivos que use no entren en conflicto con los archivos del equipo de destino al instalar la aplicación en tiempo de ejecución. Estas son las directrices:

  1. Desarrollar la base de datos de Access en cualquier equipo.
  2. Cree un entorno de equipo donde se haya reformateado el disco duro y donde solo esté instalada la versión más antigua del sistema operativo aplicable, de Office y de Office 2000 Developer. Ejecute el Asistente para paquetes e implementación en este equipo para crear la versión en tiempo de ejecución de la aplicación. Esto garantiza que los niveles de revisión de los archivos funcionarán en cualquiera de los equipos de destino.
  3. Cree un entorno de equipo en el que se haya reformateado el disco duro y donde solo esté instalado el sistema operativo. Pruebe la aplicación en tiempo de ejecución en este entorno.
    • Si la aplicación no se ejecuta correctamente, sabe que hay algún problema con la propia aplicación. Debe identificar y corregir el problema antes de distribuir la aplicación.
    • Si la aplicación funciona correctamente en el equipo de prueba pero no funciona en el equipo de destino, sabe que hay algún problema en el equipo de destino en lugar de en la aplicación. Debe identificar y corregir la causa probable en el equipo de destino, probablemente una incompatibilidad o un archivo dañado.

Actualizar la lista de referencias

Si el problema de referencia implica un control ActiveX, a veces puede solucionar el problema actualizando la lista de referencias. Para actualizar la lista de referencias:

  1. En el Editor de Visual Basic, en el menú Herramientas, haga clic en Referencias.
  2. En el cuadro de diálogo Referencias, haga clic para seleccionar una referencia que aún no esté seleccionada, anote cuál selecciona y, luego, haga clic en Aceptar.
  3. En el menú Herramientas, haga clic de nuevo en Referencias.
  4. Haga clic para deseleccionar las referencias y, luego, haga clic en Aceptar.

Distribución de archivos de base de datos que tienen controles ActiveX

Existen dos tipos de licencias para controles ActiveX: una licencia en tiempo de diseño y una en tiempo de ejecución.

  • Una licencia en tiempo de diseño le permite insertar controles ActiveX con licencia desde Office 2000 Developer en formularios e informes en una base de datos de Access.
  • Una licencia en tiempo de ejecución le permite usar controles ActiveX en una base de datos de Access en un equipo que no tenga instalado Office 2000 Developer, pero no le permite insertar nuevos controles ActiveX con licencia. Para instalar una licencia en tiempo de ejecución, distribuya los controles ActiveX mediante el Asistente para paquete e implementación, que graba la licencia para los controles en el Registro del equipo de destino.

Una marca Ausente, que puede ver al abrir un módulo en la vista Diseño y, luego, al hacer clic en Referencias en el menú Herramientas, indica que la referencia al control Cuadro de diálogo común en el equipo de destino no coincide con el origen del archivo de base de datos del equipo de desarrollo.

Si distribuye un archivo de base de datos sin instalar el control de cuadro de diálogo común distribuible, la referencia del control puede marcarse como Ausente o puede recibir un mensaje de error que indica que "No tiene la licencia necesaria para usar este control ActiveX" si el control no distribuible ya está instalado en el equipo de destino.

Incluso cuando el archivo de base de datos forma parte de una aplicación en tiempo de ejecución, puede recibir el mensaje de error "No tiene la licencia necesaria para usar este control ActiveX" si el control no distribuible que ya está instalado en el equipo de destino es de una versión posterior que el control proporcionado por la aplicación en tiempo de ejecución. Este problema puede producirse porque el programa de instalación no sobrescribe versiones posteriores de un archivo con una versión anterior del mismo archivo.

Volver a registrar un archivo

Es posible que un archivo se encuentre en la lista de referencias sin estar registrado correctamente en el Registro. Si sospecha que podría ser así, haga lo siguiente para volver a registrar el archivo:

  1. En Microsoft Windows NT 4.0, haga clic en Inicio, seleccione Buscar y, luego, haga clic en Archivos o carpetas; o en Windows 2000, haga clic en Inicio, seleccione Buscar y, luego, haga clic en Para archivos y carpetas.
  2. En el cuadro Con nombre o Buscar archivos y carpetas con nombre, escriba regsvr32.exe.
  3. En el cuadro Buscar en, haga clic en la raíz del disco duro (normalmente C:).
  4. Seleccione la casilla Incluir subcarpetas si no está activada ya y, luego, haga clic en Buscar ahora.
  5. Después de encontrar el archivo, haga clic en Inicio, Ejecutar y, luego, elimine todo lo que esté en el cuadro Abrir.
  6. Arrastre el archivo Regsvr32.exe desde el panel de resultados de búsqueda hasta el cuadro Abrir.
  7. Repita los pasos del 2 al 6, esta vez buscando Nombre de archivo.dll, donde Nombre de archivo es el nombre del archivo que desea volver a registrar.
  8. Después de que el archivo Nombre de archivo.dll se encuentre en el cuadro Abrir con el archivo Regsvr32.exe, haga clic en Aceptar.
  9. En Access, pruebe para ver si el problema sigue produciéndose.

Si no tiene el archivo Regsvr32.exe en el equipo, busque el archivo en otros equipos. Si el archivo no está disponible, puede obtener el archivo del sitio web de Microsoft.

Nota:

Recuerde compilar todos los módulos después de ajustar las referencias. Para compilar todos los módulos, con el módulo aún abierto, en el menú Depurar, haga clic en Compilar base de datos. Si los módulos no se compilan, puede haber más referencias sin resolver.