Paso 1 Crear una tabla "AccessObjectType" Columnas:
- TypeID autonumber
- texto TypeStr
- showuser Sí/No
- ShowAdmin Sí/No
pueblan el "AccessObjectType" tabla:
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
Si lo desea, puede crear otra columna llamada "SimpleType" para la agrupación de 1, 4 y 6 de la Tabla tan simple tipo.
Paso 2 Crear consulta "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;
Paso 3 Crear una tabla "AccessObjectVisibility" Columnas:
- de objeto, siempre y (crear una búsqueda usando AccessObjectQ)
- UserVisible como Sí/No
- AdminVisible como Sí/No
Ahora puede abrir fácilmente esta tabla (o una consulta) y seleccione los objetos que desea que los usuarios y los administradores a ver en las listas de forma automática pobladas que ha suministrado en formas.
Paso 4 Crear consulta "UserAccessObject"
Select * from AccessObjectVisibility where UserVisible = True
Crear consulta "UserAccessForm"
Select * from AccessObjectVisibility where UserVisible = True and TypeID = -32768
Crear consultas: "UserAccessQuery" "UserAccessReport", "UserAccessMacro", etc.
Paso 5 " Cree un menú de informes personalizados mediante la consulta "UserAccessReport" para rellenar un cuadro de lista o un cuadro combinado
¡Gracias! Pero, ¿no debería haber información "oficial" de Microsoft en alguna parte? – waanders
Por lo que recuerdo, MS no quiere que hurgues en las tablas del sistema, puede hacer cosas realmente horribles en tu DB si no sabes lo que estás haciendo. Son indocumentados y la gente siempre usa una advertencia cuando los menciona. Sin embargo, eso parece haberse detenido. – Fionnuala
Bueno, para empezar, MS ha prometido (según Michael Kaplan) que una vez que algo en una tabla del sistema se usa para algo, siempre será compatible. Cómo sabes la diferencia entre objetos usados y no usados, no tengo ni idea, pero ahí está. –