RE: Who is logged in?
- From: "'69 Camaro" <ForwardZERO_SPAM.To.69Camaro@xxxxxxxxxxxxxxxxxxxxxx>
- Date: Mon, 3 Oct 2005 19:43:05 -0700
Hi, Nick.
> I would like to make a form for the administrator/manager
> that will show who is currently "logged in" to the database.
One may use the Jet User Roster for checking users logged into the database.
One common usage is to display this information in the Immediate Window.
Please see the following Web page for sample code:
http://support.microsoft.com/default.aspx?id=285822
If you'd like to display the information in a list box on the form instead,
then set a Reference to the ADO library, create a list box with four columns,
name it lstRoster, and create a button, name it UserRosterBtn, then paste the
following code in the form's code module:
Private Sub UserRosterBtn_Click()
On Error GoTo ErrHandler
Dim cnxn As New ADODB.Connection
Dim recSet As New ADODB.Recordset
Dim sCompName As String
Dim sLoginName As String
Dim sList As String
Dim sValue As String
Dim idx As Long
Dim pos As Long
cnxn.Provider = "Microsoft.Jet.OLEDB.4.0"
cnxn.Open "Data Source=T:\Data\MyData.mdb"
' The user roster is exposed as a provider-specific schema rowset
' in the Jet 4 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 recSet = cnxn.OpenSchema(adSchemaProviderSpecific, , _
"{947bb102-5d43-11d1-bdbf-00c04fb92675}")
'-------------------------------------------------------
' Output the list of all users in the database.
'-------------------------------------------------------
'-------------------------------------------------------
' Get headers for each column in list box.
'-------------------------------------------------------
sList = recSet.Fields(0).Name & ";" & recSet.Fields(1).Name & _
";" & recSet.Fields(2).Name & ";" & recSet.Fields(3).Name
While Not recSet.EOF
'-------------------------------------------------------
' Determine the computer name from Unicode.
'-------------------------------------------------------
sValue = Left(recSet.Fields(0).Value, Len(recSet.Fields(0).Value))
For idx = 1 To Len(sValue)
If (Asc(Mid$(sValue, idx, 1)) = 0) Then
pos = idx
Exit For
End If
Next idx
sCompName = Left(recSet.Fields(0).Value, (pos - 1))
pos = 0
' Reset.
'-------------------------------------------------------
' Determine the login name from Unicode.
'-------------------------------------------------------
sValue = Left(recSet.Fields(1).Value, Len(recSet.Fields(1).Value))
For idx = 1 To Len(sValue)
If (Asc(Mid$(sValue, idx, 1)) = 0) Then
pos = idx
Exit For
End If
Next idx
sLoginName = Left(recSet.Fields(1), (pos - 1))
'-------------------------------------------------------
' Retrieve values for entire row in list box.
'-------------------------------------------------------
sList = sList & ";" & sCompName & ";" & sLoginName & _
";" & recSet.Fields(2) & ";" & _
IIf(IsNull(recSet.Fields(3)), "Null", recSet.Fields(3))
recSet.MoveNext
Wend
Me!lstRoster.RowSource = sList
Me!lstRoster.Requery
CleanUp:
Set recSet = Nothing
Set cnxn = Nothing
Exit Sub
ErrHandler:
MsgBox "Error in UserRosterBtn_Click( ) in " & vbCrLf & _
Me.Name & " form." & vbCrLf & vbCrLf & _
"Error #" & Err.Number & vbCrLf & Err.Description, _
vbExclamation + vbOKOnly, "Error!"
Err.Clear
GoTo CleanUp
End Sub
.. . . and replace T:\Data\MyData.mdb with the path to your database on the
networked server (UNC is preferred), save and compile. At the click of a
button, the user can display all of the users logged into the database on the
server.
HTH.
Gunny
See http://www.QBuilt.com for all your database needs.
See http://www.Access.QBuilt.com for Microsoft Access tips.
(Please remove ZERO_SPAM from my reply E-mail address so that a message will
be forwarded to me.)
- - -
If my answer has helped you, please sign in and answer yes to the question
"Did this post answer your question?" at the bottom of the message, which
adds your question and the answers to the database of answers. Remember that
questions answered the quickest are often from those who have a history of
rewarding the contributors who have taken the time to answer questions
correctly.
"Tatakau" wrote:
> I have an Access 2000 split database on a network. The back-end (data) is on
> a network drive, and individual copies of the front-end (forms & such) are on
> each computer. I would like to make a form for the administrator/manager
> that will show who is currently "logged in" to the database.
>
> And if it makes any difference, the database is currently not secure. At all.
>
> Thanks!
>
> Nick
.
- Follow-Ups:
- RE: Who is logged in?
- From: Tatakau
- RE: Who is logged in?
- Prev by Date: Re: Administer users via code
- Next by Date: Free Trial Protection
- Previous by thread: Administer users via code
- Next by thread: RE: Who is logged in?
- Index(es):