I was wondering if it is possible to run different switchboards. I have multiple users whom I have grouped in to different workgroups with each workgroup having access to different functions of the database. I would like a different switchboard for each workgroup without having to actually create the separate forms.
I knowI can create different manual switchboards according to workgroup but I was wondering if there was a method to use the swithboard function for different workgroups.
Hope this makes sense.
Tomb
This assumes you will continue to use the mdb file format with Ms Access 2007, instead of converting to the new accdb format (new format eliminates user level security).
One way I could envision it working is as follows (assuming you have 3 workgroups defined in ULS (User Level Security):
1. Modifiy the traditional one visible button for each function on the Switchboard to 3 not visible buttons for each function (one button for each workgroup) on the switchboard. The leftmost button for every function will be made visible when the switchboard opens if the user logging in is a member of workgroup 1, the middle button for every function will be made visible upon switchboar open if the user logging in is a member of workgroup2, and the rightmost button for every funcition will be made visible when the switchboard opens if the user logging in is a member of workgroup3.
2. The IsUserInGroup function, provided by LSMConsulting, is a quick way to determine Group membership:
Public Function IsUserInGroup(GroupName As String, UserName As String) As Boolean
Dim usr As DAO.User
Dim wsp As DAO.Workspace
On Error Resume Next
Set wsp = DBEngine.Workspaces(0)
Set usr = wsp.Groups(GroupName).Users(UserName)
IsUserInGroup = Err.Number <> 3265
End Function
Use it like this:
IsUserInGroup("Admins", CurrentUser)
would return True if the currentuser were a member of the Admins group ...
There is really no reason to iterate the group members; DAO will always throw the 3265 error if you pass in the wrong group or a user who isn't a member.
The Access User Level Security FAQ has some good code examples of how to determine User and Group membership ... download it from the link of this page.
http://www.jmwild.com/Accesssecurity.htm
3. The buttons for each workgroup would then enable/disable access to functions (e.g. a customer order form) depending on the workgroup they are associated with.
This link for Access 2000 may be useful to you for other ideas on how you could implement application level security at the Switchboard.
http://support.microsoft.com/kb/304315
In addition, there are some third party vendors who provide some aspect of application level security as an add-in.
http://www.peterssoftware.com/las.htm http://www.safe-install.com/programs...or-access.html