次の方法で共有

アクセス2013 接続しているユーザー数取得

Anonymous
2015-06-27T14:06:46+00:00

アクセスファイルのデータ部分を共有フォルダーにおいて、他のPCからも接続できるようにしています。(バック・フロントエンド)

その様な状況で、バックエンドに接続しているユーザー数(PC台数)を取得するには、いかがしたらよいでしょうか?

バックエンドの***.laccdbをメモ帳で開くと、接続中のPC名がでますが、接続を切ったあとも***.laccdbには、PC名が残ったままでした。

ネット検索で

「Microsoft Jet UserRoster を使用して、データベースにログインしているユーザーをチェックする」

を参考にしましたが、***.accdbではだめみたいで・・・・・

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2015-06-28T08:10:44+00:00

バックエンドでこの処理を行わないとだめですよ。

多分、フロントエンドでやっているのですよね?

フロントエンドでやるならば、バックエンドの情報を参照するように接続文字列を変更すればよいですよ。

修正前(この1行を):

 Set cn = CurrentProject.Connection

修正後(下の3行に):

 Set cn = New ADODB.Connection

 cn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\server\folder\access.accdb"

 (ファイルのパスは変更してくださいね)

 cn.Open

 ※省略しただけとは思いますが、最後にクローズを入れましょうね。

  rs.Close

  cn.Close

  set rs = Nothing

  set cn = Nothing

この回答は役に立ちましたか?

0 件のコメント コメントはありません

3 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2015-06-28T12:04:59+00:00

    はい、そうでした。途中気が付いて、試してみたらバックエンド側で確認できました。

    フロントエンド側で見たいので、

    >cn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\server\folder\access.accdb"

    >cn.Open

    これで、接続数を確認できました。

    このようなコードは不慣れで、最後のクローズは失念してました。

    ありがとうございます。とても助かりました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2015-06-28T07:36:33+00:00

    ご回答ありがとうございます。

    実験してみました。

    Public Sub ShowUserRosterMultipleUsers()

        Dim cn As New ADODB.Connection

        Dim rs As New ADODB.Recordset

        Dim i, j As Long

        Set cn = CurrentProject.Connection

        Set rs = cn.OpenSchema(adSchemaProviderSpecific, _

        , "{947bb102-5d43-11d1-bdbf-00c04fb92675}")

        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

    データ部をバックエンドに分割していない状況ですと、上記コードで接続数分がわかりました。

    しかし、データをバックエンドに分割すると、接続数は常に1個でした。

    分割されたデータ部への接続数を取得する方法はありませんか?

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2015-06-27T15:11:08+00:00

    ”Microsoft Jet UserRoster”は、accdbでも可能ですよ。

    参照設定忘れてませんか?(VBEのツール>参照設定にて)

    Microsoft ActiveX Data Objects 2.1以降を参照設定してもう一度試してみてください。

    また、この方法以外でも確認ができます。

    ファイルを置いてあるPCにて、”コンピューターの管理”を起動し、”共有フォルダ”の”開いているファイル”で、どのファイルを誰が、どんなモードで開いているかが一覧表示されます。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません