Give the following a try if you are using Access 2000 or later:
'Contains procedures to manage MS Access security via VB.
'Uses Jet 4 ANSI-92 extensions (for simplicity) accessible via SQL so will only work in
'MS Access 2000 or later.
'Also have to use ADO connections to run the SQL. CurrentDB.Execute runs in Jet3.6...
'Written by Ed Metcalfe, 28/11/2002.
Public Sub CreateUser(ByVal strUserName As String, ByVal strPWord As String, ByVal lngPID As Long)
Dim cnn As ADODB.Connection
Set cnn = CurrentProject.Connection
cnn.Execute "CREATE USER " & strUserName & " " & strPWord & " " & lngPID & ";"
'All users must be members of users group
Call AddToGroup(strUserName, "Users")
cnn.Close
Set cnn = Nothing
End Sub
Public Sub CreateGroup(ByVal strGroupName As String, ByVal lngGID As Long)
Dim cnn As ADODB.Connection
Set cnn = CurrentProject.Connection
cnn.Execute "CREATE GROUP " & strGroupName & " " & lngGID & ";"
cnn.Close
Set cnn = Nothing
End Sub
Public Sub ChangePass(ByVal strUserName As String, strNewPass As String, strOldPass As String)
Dim cnn As ADODB.Connection
Set cnn = CurrentProject.Connection
cnn.Execute "ALTER USER " & strUserName & " PASSWORD " & strNewPass & " " & strOldPass & ";"
cnn.Close
Set cnn = Nothing
End Sub
Public Sub AddToGroup(ByVal strUserName As String, ByVal strGroupName As String)
Dim cnn As ADODB.Connection
Set cnn = CurrentProject.Connection
cnn.Execute "ADD USER " & strUserName & " TO " & strGroupName & ";"
cnn.Close
Set cnn = Nothing
End Sub
Public Sub RemoveFromGroup(ByVal strUserName As String, ByVal strGroupName As String)
Dim cnn As ADODB.Connection
Set cnn = CurrentProject.Connection
cnn.Execute "DROP USER " & strUserName & " FROM " & strGroupName
cnn.Close
Set cnn = Nothing
End Sub
Public Sub DeleteUser(ByVal strUserName As String)
Dim cnn As ADODB.Connection
Set cnn = CurrentProject.Connection
cnn.Execute "DROP USER " & strUserName & ";"
cnn.Close
Set cnn = Nothing
End Sub
Public Sub DeleteGroup(ByVal strGroupName As String)
Dim cnn As ADODB.Connection
Set cnn = CurrentProject.Connection
cnn.Execute "DROP GROUP " & strGroupName & ";"
cnn.Close
Set cnn = Nothing
End Sub
Public Sub AssignPermission(ByVal strAction As String, ByVal strPermissionName As String, ByVal strObjectName As String, ByVal strObjectType As String, ByVal strAccountName As String)
'strAction - GRANT Or REVOKE
'strPermissionName - SELECT, DELETE, INSERT, UPDATE, DROP, SELECTSECURITY, UPDATESECURITY,
'DBPASSWORD, UPDATEIDENTITY, CREATE, SELECTSCHEMA, SCHEMA, UPDATEOWNER
'strObject Name - Name of table/form/report etc.
'strObjectType - "TABLE", "OBJECT" OR "CONTAINER"
'strAccountName - name of user or group
'How do you give design privs then??
Dim cnn As ADODB.Connection
Set cnn = CurrentProject.Connection
Select Case strAction
Case "GRANT"
cnn.Execute "GRANT " & strPermissionName & " ON " & strObjectType & " " & strObjectName & " TO " & strAccountName & ";"
Case "REVOKE"
cnn.Execute "REVOKE " & strPermissionName & " ON " & strObjectType & " " & strObjectName & " FROM " & strAccountName & ";"
End Select
cnn.Close
Set cnn = Nothing
End Sub
Please do not feed the trolls.....