ACC: Obtener el nombre de la actual base de datos de usuario utilizando Access Basic

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

Haga clic aquí para ver el artículo original (en inglés): 89681
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Resumen
Avanzado: Requiere codificación experto, interoperabilidad, conocimientos y multiusuario.

Microsoft Access versión 1.x no tiene un medio integrado para determinar el nombre de la base de datos que el usuario tiene abierto actualmente. Este artículo enumeran una función de Access Basic de ejemplo que puede utilizar para buscar el nombre de la base de datos de Microsoft Access 1.x.

En Microsoft Access versión 2.0, puede encontrar el nombre de la base de datos utilizando objetos de acceso a datos (DAO). Con DAO, puede utilizar la propiedad Name del objeto DBEngine para encontrar la ruta de acceso y nombre de la base de datos abierta. Para obtener más información sobre el objeto DBEngine, busque "DBEngine" y "DBEngine objeto" mediante el menú Ayuda de Microsoft Access 2.0.

En este artículo se asume que está familiarizado con Access Basic y con la creación de aplicaciones de Microsoft Access mediante las herramientas de programación suministradas con Microsoft Access. Para obtener más información acerca de Access Basic, consulte el manual "Introduction to Programming" de Microsoft Access versión 1.x o el manual "Creación de aplicaciones" en la versión 2.0.
Más información
Aunque se puede obtener la variable de objeto de la base de datos de usuario actual mediante la función CurrentDB(), es no se puede obtener la representación de texto del nombre de base de datos. En el ejemplo siguiente se muestra cómo una función definida por el usuario denominada GetUserDBName() Obtiene una representación de texto del nombre de base de datos de usuario.

La función GetUserDBName() devuelve el nombre de la base de datos con ruta de acceso ni extensión. Debe agregar su propia cadena extensión o ruta de acceso al resultado de la función GetUserDBName() cuando sea necesario.

Nota: El código para determinar la base de datos actual no funciona con versiones de tiempo de ejecución de Microsoft Access (MSARN110.EXE).
  1. Escriba el siguiente código de ejemplo en un módulo.

    Nota: En el siguiente ejemplo de código, un carácter de subrayado (_) se utiliza como un carácter de continuación de línea. Quite el carácter de subrayado del final de la línea cuando escriba este código en Access Basic.

    Nota: Puede tener algunas funciones de API de Microsoft Windows definidas en una biblioteca Microsoft Access existente; por lo tanto, las declaraciones pueden ser duplicados. Si recibe un mensaje de error de nombre de procedimiento duplicados, quite o comente la instrucción de declaraciones en el código.

    Opción Compare Database ' Utilice el orden de la base de datos para las comparaciones de cadenas.

    Option Explicit

          Declare Function GetWindow% Lib "USER" Alias "GetWindow" _                       (ByVal hwnd%, ByVal Relationship%)      Declare Function GetClassName% Lib "USER" Alias "GetClassName" _                       (ByVal hwnd%, ByVal ClassName$, ByVal Size%)      Declare Function GetWindowText% Lib "User" Alias "GetWindowText" _                       (ByVal hwnd%, ByVal StringText$, ByVal wInt%)      Declare Function GetActiveWindow% Lib "USER" Alias _                       "GetActiveWindow" ()      Declare Function GetParent% Lib "USER" Alias "GetParent" (ByVal _                       hwnd%)      Const GW_HWNDNEXT = 2      Const GW_CHILD = 5      Const AccessDBC = "ODb"      Const AccessMDICLIENT = "MDIClient"      Const ACCESSMain = "OMain"      Function GetDBName ()         Dim hwnd As Integer         Dim ClassName As String, ClassLen As Integer         Dim Caption As String, CaptionLen As Integer         Dim Start As Integer, fMDIClient As Integer         Dim RetVal         '         ' Get the handle to the Microsoft Access window.         '         hwnd = GetActiveWindow()         ClassName = Space(127)         ClassLen = GetClassName(hwnd, ClassName, Len(ClassName))         While ((Left$(ClassName$, ClassLen) <> "OMain"))            hwnd = GetParent(hwnd)            ClassLen = GetClassName(hwnd, ClassName, Len(ClassName))         Wend         '         ' Traverse the children looking for the 'MDIClient' child.         '         hwnd = GetWindow(hwnd, GW_CHILD)         Do While hwnd And Not fMDIClient            ClassLen = GetClassName(hwnd, ClassName, Len(ClassName))            If Left$(ClassName, ClassLen) = "MDIClient" Then               fMDIClient = True            Else               hwnd = GetWindow(hwnd, GW_HWNDNEXT)            End If         Loop         '         ' Traverse children until we find the Database Window 'ODb' child         ' .. which has a title of "Database: <app name>".         '         hwnd = GetWindow(hwnd, GW_CHILD)         Do While hwnd            ClassLen = GetClassName(hwnd, ClassName, Len(ClassName))               ClassName = Mid$(ClassName, 1, ClassLen)               If Left$(ClassName, ClassLen) = "ODb" Then                  Caption = Space$(127)                  RetVal = GetWindowText(hwnd, Caption, Len(Caption))                  Start = InStr(Caption, ":") + 2                  GetDBName = Mid$(Caption, Start)                  Exit Function               End If               hwnd = GetWindow(hwnd, GW_HWNDNEXT)         Loop         GetDBName = "Not Found"      End Function						
  2. Escriba la línea siguiente en la ventana Inmediato y presione ENTRAR:

    ? GetDBName()

    Tenga en cuenta que se devuelve el nombre de la base de datos.
Referencias
Para obtener más información acerca de DAO, consulte en contacto con el siguiente artículo en Microsoft Knowledge Base:

113919ACC: Cómo obtener el nombre de la base de datos actual

dbname DDE

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 89681 - Última revisión: 02/08/2014 20:14:51 - Revisión: 2.0

Microsoft Access 1.0 Standard Edition, Microsoft Access 1.1 Standard Edition, Microsoft Access 2.0 Standard Edition

  • kbnosurvey kbarchive kbmt kbhowto kbprogramming KB89681 KbMtes
Comentarios