Step 1
Create table "AccessObjectType"
Columns:
- TypeID autonumber
- TypeStr text
- ShowUser Yes/No
- ShowAdmin Yes/No
Populate the "AccessObjectType" table:
TypeID TypeStr ShowUser ShowAdmin
-32775 Module False True
-32772 Report True True
-32768 Form True True
-32766 Macro True True
-32764 Report True True
-32761 Module False True
-32758 User False False
-32757 Database Document False False
1 Table (local) True True
2 Access Object - Database False True
3 Access Object - Container False True
4 Table, linked ODB SQL True True
5 Query True True
6 Table, Linked Access Excel True True
7 Type 7 True True
8 SubDataSheet True True
If you like, you can create another column called "SimpleType" for grouping of 1, 4 and 6 as simple type Table.
Step 2
Create Query "AccessObjectQ"
SQL:
SELECT MSysObjects.Id,
MSysObjects.Name,
[Name] & " (" & [TypeStr] & ")" AS NameAndType,
[TypeStr] & ": " & [Name] AS TypeAndName,
Abs([Type]) AS ObjTypeID,
AccessObjectType.TypeStr,
AccessObjectType.ShowUser,
AccessObjectType.ShowAdmin
FROM MSysObjects LEFT JOIN AccessObjectType
ON MSysObjects.Type = AccessObjectType.TypeID
WHERE (((MSysObjects.Name) Not Like "msys*"
And (MSysObjects.Name) Not Like "*subform"
And (MSysObjects.Name) Not Like "*_*"
And (MSysObjects.Name) And (MSysObjects.Name) Not Like "*SF"
And (MSysObjects.Name) Not Like "*SQ"
And (MSysObjects.Name) Not Like "*~*")
AND (((AccessObjectType.ShowUser)=True) OR ((AccessObjectType.ShowAdmin)=True)))
ORDER BY MSysObjects.Name;
Step 3
Create a table "AccessObjectVisibility"
Columns:
- ObjectID as long (create as a lookup using AccessObjectQ)
- UserVisible as Yes/No
- AdminVisible as Yes/No
You can now easily open this table (or a query) and select objects that you want users and admins to see in automatically populated lists you provide on forms.
Step 4
Create Query "UserAccessObject"
Select * from AccessObjectVisibility where UserVisible = True
Create Query "UserAccessForm"
Select * from AccessObjectVisibility where UserVisible = True and TypeID = -32768
Create queries: "UserAccessReport", "UserAccessQuery", "UserAccessMacro", etc.
Step 5"
Create a custom reports menu using query "UserAccessReport" to populate a list box or combo box