Wow. I really plugged away tinkering around with solutions found at Google newsgroup searching. Finally, I found one that halfway worked, once I figured a couple of things on my own and tinkered with it.
Thing is, it was really simple adding a new user in code. The problem was having this user joined to one group at a time. Creating the user and assigning it to a particular group at that time was easy. But to specify that the user should also be joined to another group, that was very difficult for me to figure out how to do. Finally, largely by using my one instincts frankly, I figured out how.
The steps:
Private Sub cmdAddUser_Click() Call CreateNewUser(Me.txtUserName) End Sub Private Sub cmdDeleteUser_Click() Call delete_user(Me.txtUserName) End Sub
Public Sub CreateNewUser(ByVal strUser As String) ' Create a new user and add them to the Full Data Users group and then to the Users Group ' Returns True on success, False if user already exists Dim db As Database Dim ws As Workspace Dim usr As User Dim grpUsers As Group Dim strPID As String ' The Next 3 lines are commented out; there appears to be ' a missing function for detecting if the user you're attempting to add already exists. ' As it stands, if the operator tries to do this, an error results; error-trapping ' would seem to be the way to handle this if I can't figure out the IsUser function. 'If IsUser(strUser) = True Then ' Exit Sub 'End If 'Set ws = DBEngine.Workspaces(0) ' The above set ws is commented out as that was what originally appeared ' in the code I found. Problem is, only admins could ' add/delete users. In my experimentation, the following edit sort of ' "logs in" as administrator thus allowing anyone opening this form to add/delete users. ' I wonder if {Dim ws as Workspace} should read {Dim ws as DAO.Workspace} ' I also wonder if {Dim usr as User} should read {Dim usr as DAO.User}. ' Notice the delete_user function has that syntax. Set ws = DBEngine.CreateWorkspace("AdminWorkspace", "AdminID", _ "AdminPassword") Const conGroup As String = "Full Data Users" ws.Users.Refresh ' go ahead and create the user account strPID = strUser & strUser strPID = Left(strPID, 20) ' max 20 chars With ws Set usr = .CreateUser(strUser, strPID, "") .Users.Append usr Set grpUsers = usr.CreateGroup(conGroup) usr.groups.Append grpUsers End With '*********************************** ' FINALLY FIGURED IT OUT!! This code adds the new user ' to the group Users after having created it and joined it ' to the "Full Data Users" group in the prior code. With ws Set grpUsers = usr.CreateGroup("Users") usr.groups.Append grpUsers End With ws.Users.Refresh '*********************************** MsgBox "New user = " & strUser Set ws = Nothing Set usr = Nothing End Sub Function delete_user(stUsr As String) ' Delete User Dim wrk As DAO.Workspace Dim usr As DAO.User Set wrk = DBEngine.CreateWorkspace _ ("", "AdminUser", "AdminPassword", dbUseJet) wrk.Users.Delete stUsr Set wrk = Nothing Set usr = Nothing MsgBox "User " & stUsr & " has been deleted." End Function