[AccessD] Number of Users

Dan Waters dwaters at usinternet.com
Sun Jan 6 13:40:05 CST 2008


No - you'll need to work on it.

You'll need to use your own tables of course.  You'll also need to deal with
a couple of custom Functions (like 'SystemTitle'), which you'll need to
either change or remove.

I forgot about this but I believe that you'll need to qualify all your other
recordset variables with your database as DAO.Recordset or ADODB.Recordset.
If you also set a reference to ADO, then your recordsets will need to know
which type to become.

This is intended as a template to start with.  I hope it does help!
Dan

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Rocky Smolin at
Beach Access Software
Sent: Sunday, January 06, 2008 1:18 PM
To: 'Access Developers discussion and problem solving'
Subject: Re: [AccessD] Number of Users

Dan:

Just drop it in and it works?  I try to avoid code when I don't understand
everything it's doing.  Can't maintain it.  Pretty much set a reference to
ADO and then plug and play?

Rocky





 	
	

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Dan Waters
Sent: Sunday, January 06, 2008 10:45 AM
To: 'Access Developers discussion and problem solving'
Subject: Re: [AccessD] Number of Users

Hi Rocky,

This came from MS KB198755, and I've used it for a few years now with no
problems.  This will also tell the person being kicked off who else is
logged in so they know who to ask to log off.

-------------------------------------------------------------------

Public Sub UserLimit()
    
    Dim con As New ADODB.Connection
    Dim rst As New ADODB.Recordset
    Dim stgData As String
    Dim stg As String
    Dim stgFullName As String
    Dim rstFullname As DAO.Recordset
    Dim stgUserName As String
    Dim stgNameList As String
    Dim intUsers As Integer
    Dim stgUsers As String
    Dim rstUsers As DAO.Recordset
    Dim stgLockout As String
    Dim rstLockout As DAO.Recordset
    
    '-- 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

    '-- This is from MSKB 198755 and is specific to Access 2000 & up
    con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
DBEngine.SystemDB

    Set rst = con.OpenSchema(adSchemaProviderSpecific, ,
"{947bb102-5d43-11d1-bdbf-00c04fb92675}")
    
    Do While rst.EOF = False
        stgUserName = Left$(rst(1), InStr(1, rst(1), Chr(0)) - 1)
        Set rstFullname = DBEngine(0)(0).OpenRecordset("SELECT Person FROM
tblPeopleMain" _
            & " WHERE UserName = '" & stgUserName & "'", dbOpenSnapshot)
        If stgUserName <> "Admin" Then
            If stgNameList = "" Then
                stgNameList = rstFullname("Person")
            Else
                stgNameList = rstFullname("Person") & ", " & vbNewLine &
stgNameList
            End If
            intUsers = intUsers + 1
        End If
        rst.MoveNext
        rstFullname.Close
        Set rstFullname = Nothing
    Loop
    rst.Close
    Set rst = Nothing
    
    '-- Look for too many users logging in
    stgUsers = "SELECT ThisMonthUsers FROM tblUserLicenseInformation"
    Set rstUsers = DBEngine(0)(0).OpenRecordset(stgUsers, dbOpenSnapshot)
    If intUsers > rstUsers("ThisMonthUsers") Then
        stgLockout = "SELECT * FROM tblUserLicenseLockouts"
        Set rstLockout = DBEngine(0)(0).OpenRecordset(stgLockout,
dbOpenDynaset)
        rstLockout.AddNew
        rstLockout("Name") = CurrentPerson
        rstLockout("LockoutDate") = CurrentDate
        rstLockout("LockoutTime") = Format(Now(), "Medium Time")
        rstLockout("AllowedUsers") = rstUsers("ThisMonthUsers")
        rstLockout.Update
        rstLockout.Close
        Set rstLockout = Nothing
        FormattedMsgBox GstgNotReady, "There are insufficient User Licenses
for you to log on." _
            & "  The following people are now logged on to " & SystemTitle &
":" _
            & vbNewLine & vbNewLine _
            & stgNameList & "@ @", vbExclamation + vbOKOnly, "Insufficient
User Licenses"
        rstUsers.Close
        Set rstUsers = Nothing
        DoEvents
        DoCmd.Quit
        Exit Sub
    End If
    rstUsers.Close
    Set rstUsers = Nothing

End Sub

---------------------------------------------------------------------------


-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Rocky Smolin at
Beach Access Software
Sent: Sunday, January 06, 2008 10:19 AM
To: 'Access Developers discussion and problem solving'
Subject: [AccessD] Number of Users

Dear List:
 
What is the easiest way to restrict the number of users in a FE/BE
application?
 
MTIA
 
Rocky
 
--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com

--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com

No virus found in this incoming message.
Checked by AVG Free Edition. 
Version: 7.5.516 / Virus Database: 269.17.13/1210 - Release Date: 1/5/2008
11:46 AM
 

-- 
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com




More information about the AccessD mailing list