Cómo determinar quién ha iniciado sesión en una base de datos mediante Microsoft Jet UserRoster en Access

Avanzado: requiere conocimientos expertos de codificación, interoperabilidad y multiusuario.

Este artículo se aplica a un archivo de base de datos de Microsoft Access .mdb o .accdb.

Resumen

En este artículo se muestra cómo usar Microsoft Visual Basic para Aplicaciones para generar una lista de usuarios que han iniciado sesión en una base de datos.

Microsoft proporciona ejemplos de programación con fines ilustrativos únicamente, sin ninguna garantía, ya sea expresa o implícita. Esto incluye, entre otras, las garantías implícitas de comerciabilidad e idoneidad para un fin determinado. Se considera que está familiarizado con el lenguaje de programación que se muestra y con las herramientas para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento. Sin embargo, no modificarán estos ejemplos para proporcionar una funcionalidad adicional o procesos de construcción para que se cumplan sus requisitos específicos.

Cuando se usa el código de ejemplo siguiente, se devuelve la siguiente información:

  • Nombre del equipo.
  • Nombre de inicio de sesión.
  • Si el usuario está o no conectado a la base de datos. (El identificador de un usuario permanece en la base de datos de bloqueo hasta que el último usuario se desconecta o hasta que se reclama la ranura para una nueva conexión de usuario).
  • Si la conexión de usuario se ha terminado o no en circunstancias normales.

Esta información también se puede usar para aislar problemas con daños en la base de datos asociados a las actividades de un usuario específico.

Procedure

Precaución

Si sigue los pasos de este ejemplo, modificará la base de datos de ejemplo Northwind.mdb. Es posible que desee realizar una copia de seguridad del archivo Northwind.mdb y seguir estos pasos en una copia de la base de datos.

Para determinar quién ha iniciado sesión en una base de datos, siga estos pasos:

  1. Abra la base de datos de ejemplo, Northwind.mdb.

    Nota En Access 2007, abra la base de datos de ejemplo Northwind2007, cierre la base de datos de ejemplo Northwind2007 y vuelva a abrir la base de datos de ejemplo Northwind2007.

  2. En el menú Ver, seleccione Objetos de base de datos y, a continuación, haga clic en Módulos.

    Nota En Access 2007, haga clic en Visual Basic en el grupo Macro de la pestaña Herramientas de base de datos .

  3. Haga clic en Nuevo.

    Nota En Access 2007, haga clic en Módulo en el menú Insertar del Editor de Visual Basic.

  4. Escriba o pegue el código siguiente:

    Nota En el código de ejemplo de este artículo se usan objetos de datos De Microsoft ActiveX. Para que este código se ejecute correctamente, debe hacer referencia a la biblioteca microsoft ActiveX Data Objects 2.1 o posterior. Para ello, haga clic en Referencias en el menú Herramientas del Editor de Visual Basic y asegúrese de que la casilla Microsoft ActiveX Data Objects 2.1 Library (Biblioteca de Microsoft ActiveX Data Objects 2.1) esté activada.

    Sub ShowUserRosterMultipleUsers()
        Dim cn As New ADODB.Connection
        Dim rs As New ADODB.Recordset
    
        Set cn = CurrentProject.Connection
    
        ' The user roster is exposed as a provider-specific schema rowset
        ' in the Jet 4.0 OLE DB provider. You have to use a GUID to
        ' reference the schema, as provider-specific schemas are not
        ' listed in ADO's type library for schema rowsets
    
        Set rs = cn.OpenSchema(adSchemaProviderSpecific, _
        , "{947bb102-5d43-11d1-bdbf-00c04fb92675}")
    
        'Output the list of all users in the current database.
    
        Debug.Print rs.Fields(0).Name, "", rs.Fields(1).Name, _
        "", rs.Fields(2).Name, rs.Fields(3).Name
    
        While Not rs.EOF
            Debug.Print rs.Fields(0), rs.Fields(1), _
            rs.Fields(2), rs.Fields(3)
            rs.MoveNext
        WEnd
    
    End Sub
    
  5. Guarde el módulo como ShowUsers.

  6. Presione CTRL+G para abrir la ventana Inmediato.

  7. Escriba la línea siguiente en la ventana Inmediato y presione ENTRAR:

    ShowUserRosterMultipleUsers
    
    

    Tenga en cuenta que la ventana Inmediato devuelve una lista de usuarios que han iniciado sesión en la base de datos.