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

Nota

Office 365 ProPlus pasa a llamarse Microsoft 365 Apps para empresas. Para obtener más información sobre este cambio, lea esta publicación de blog.

Avanzado: requiere codificación experta, interoperabilidad y habilidades multiusuario.

Este artículo se aplica a un archivo de base de datos de Microsoft Access (.mdb) o a un archivo de base de datos de Microsoft Access (.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 funcionalidad adicional o construir procedimientos para satisfacer sus requisitos específicos.

Al usar el siguiente código de ejemplo, se devuelve la siguiente información:

  • Nombre del equipo.
  • Nombre de inicio de sesión.
  • Independientemente de si el usuario está conectado actualmente 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 recupera la ranura para una nueva conexión de usuario).
  • Si la conexión de usuario se finalizó 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 con las actividades de un usuario específico.

Procedimiento

Precaución

Si sigue los pasos de este ejemplo, modifique la base de datos de ejemplo Northwind.mdb. Es posible que desee hacer 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, elija Objetos de base de datos y, a continuación, haga clic en Módulos.

    Nota En Access 2007, haga clic Visual Basic en el grupo Macro de la ficha 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 El código de ejemplo de este artículo usa Microsoft ActiveX objetos de datos. Para que este código se ejecute correctamente, debe hacer referencia a microsoft ActiveX data objects 2.1 o una versión posterior de la biblioteca. Para ello, haga clic en Referencias en el menú Herramientas del Editor de Visual Basic y asegúrese de que la casilla de verificación Microsoft ActiveX Data Objects 2.1 Library está activada.

    Sub ShowUserRosterMultipleUsers()
        Dim cn As New ADODB.Connection
        Dim rs As New ADODB.Recordset
        Dim i, j As Long
    
    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 siguiente línea en la ventana Inmediato y, a continuación, 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.