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

Seleccione idioma Seleccione idioma
Id. de artículo: 89681 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

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

Propiedades

Id. de artículo: 89681 - Última revisión: sábado, 8 de febrero de 2014 - Versión: 2.0
La información de este artículo se refiere a:
  • Microsoft Access 1.0 Standard Edition
  • Microsoft Access 1.1 Standard Edition
  • Microsoft Access 2.0 Standard Edition
Palabras clave: 
kbnosurvey kbarchive kbmt kbhowto kbprogramming KB89681 KbMtes
Traducción automática
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

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com