Access で Microsoft Jet UserRoster を使用してデータベースにログオンしているユーザーを特定する方法

高度な機能: 高度なコーディング、相互運用性、マルチユーザー スキルが必要です。

この記事は、Microsoft Access データベース (.mdb) ファイルまたは Microsoft Access データベース (.accdb) ファイルに適用されます。

概要

この記事では、Microsoft Visual Basic for Applicationsを使用して、データベースにログオンしているユーザーの一覧を出力する方法について説明します。

Microsoft は、例示のみを目的としてプログラミング例を提供しており、明示または黙示にかかわらず、いかなる責任も負わないものとします。 これには、市販性または特定の目的との適合性についての黙示の保証も含まれますが、これに限定はされません。 この記事は、説明されているプログラミング言語、手順を作成およびデバッグするために使用されているツールに読者が精通していることを前提にしています。 Microsoft のサポート エンジニアが、特定の手順の機能をわかりやすく説明します。 ユーザー固有の要件に合わせた機能の追加、プロシージャの作成などの内容変更は行っておりません。

次のサンプル コードを使用すると、次の情報が返されます。

  • コンピューター名。
  • ログオン名。
  • ユーザーが現在データベースに接続されているかどうか。 (最後のユーザーが切断されるまで、またはスロットが新しいユーザー接続のために解放されるまで、ユーザーの ID はロック データベースに残ります)。
  • 通常の状況でユーザー接続が終了したかどうか。

この情報は、特定のユーザーのアクティビティに関連するデータベースの破損に関する問題を特定するためにも使用できます。

プロシージャ

注意

この例の手順に従う場合は、サンプル データベースのNorthwind.mdbを変更します。 Northwind.mdb ファイルをバックアップし、データベースのコピーに関する次の手順に従います。

データベースにログオンしているユーザーを特定するには、次の手順に従います。

  1. サンプル データベースを開き、Northwind.mdbします。

    メモ Access 2007 で Northwind2007 サンプル データベースを開き、Northwind2007 サンプル データベースを閉じてから、Northwind2007 サンプル データベースをもう一度開きます。

  2. [表示] メニューの [データベース オブジェクト] をポイントし、[モジュール] をクリックします。

    メモAccess 2007 で、[データベース ツール] タブの [マクロ] グループで [Visual Basic] をクリックします。

  3. [新規作成] をクリックします。

    メモAccess 2007 で、Visual Basic エディターの [挿入] メニューの [モジュール] をクリックします。

  4. 次のコードを入力するか貼り付けます。

    メモ この記事のサンプル コードでは、Microsoft ActiveX データ オブジェクトを使用します。 このコードを正しく実行するには、Microsoft ActiveX データ オブジェクト 2.1 以降のバージョンライブラリを参照する必要があります。 これを行うには、Visual Basic エディターの [ツール] メニューの [参照] をクリックし、[Microsoft ActiveX データ オブジェクト 2.1 ライブラリ チェック] ボックスが選択されていることを確認します。

    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. モジュールを ShowUsers として保存します。

  6. Ctrl + G キーを押してイミディエイト ウィンドウを開きます。

  7. [イミディエイト] ウィンドウに次の行を入力し、Enter キーを押します。

    ShowUserRosterMultipleUsers
    
    

    [ イミディエイト] ウィンドウには、データベースにログオンしているユーザーの一覧が返されることに注意してください。