Fase 1 Crea una tabella "AccessObjectType" Colonne:
- TypeID autonumber
- testo TypeStr
- ShowUser Sì/No
- ShowAdmin Sì/No
popolare il "AccessObjectType" tabella:
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
Se si desidera, è possibile creare un'altra colonna denominata "SimpleType" per il raggruppamento di 1, 4 e 6 tipo semplice tabella.
Fase 2 Creare 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;
Fase 3 Creare una tabella "AccessObjectVisibility" Colonne:
- ObjectID finché (creare una ricerca usando AccessObjectQ)
- UserVisible come Sì/No
- AdminVisible come Sì/No
È ora possibile aprire facilmente questo tavolo (o una query) e selezionare gli oggetti che si desidera che gli utenti e gli amministratori di vedere nelle liste popolate automaticamente forniti su forme.
Fase 4 Creare query "UserAccessObject"
Select * from AccessObjectVisibility where UserVisible = True
Creare query "UserAccessForm"
Select * from AccessObjectVisibility where UserVisible = True and TypeID = -32768
Creare query: "UserAccessReport", "UserAccessQuery", "UserAccessMacro", etc.
Passaggio 5 " Creare un menu di report personalizzati utilizzando la query "UserAccessReport" per compilare una casella di riepilogo o una casella combinata
Grazie! Ma non dovrebbero esserci informazioni "ufficiali" da qualche parte in Microsoft? – waanders
Per quanto mi ricordi, MS non vuole che ti curi nei tavoli di sistema, può fare cose davvero orribili al tuo DB se non sai cosa stai facendo. Non sono documentati e le persone usano sempre per inviare un avvertimento quando li menzionano. Tuttavia, sembra essersi fermato. – Fionnuala
Beh, per uno, MS ha promesso (secondo Michael Kaplan) che una volta qualcosa in una tabella di sistema viene usato per qualcosa, sarà sempre supportato. Come sai la differenza tra oggetti usati e non usati, non ne ho idea, ma è così. –