Krok 1 Tworzenie tabela "AccessObjectType" kolumnach:
- TypeID AutoNumber
- tekst TypeStr
- ShowUser Tak/Nie
- ShowAdmin Tak/nie
Wypełnianie „AccessObjectType” tabeli:
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
Jeśli chcesz, możesz utworzyć kolejną kolumnę o nazwie „simpleType” dla grupy 1, 4 i 6 jako prostego typu tabeli.
Etap 2 Tworzenie zapytania "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;
Etap 3 Tworzenie tabeli "AccessObjectVisibility" Kolumny:
- ObjectID dopóki (utworzyć wyszukiwanie za pomocą AccessObjectQ)
- UserVisible jak Yes/No
- AdminVisible jak Yes/No
Teraz można łatwo otworzyć tę tabelę (lub zapytanie) i wybrać obiekty, które mają użytkownicy i administratorzy zobaczyć w wypełniane automatycznie list Państwo dostarczyć na formularze.
Krok 4 Tworzenie zapytań "UserAccessObject"
Select * from AccessObjectVisibility where UserVisible = True
Tworzenie zapytania "UserAccessForm"
Select * from AccessObjectVisibility where UserVisible = True and TypeID = -32768
Tworzenie zapytania: "UserAccessReport", "UserAccessQuery", "UserAccessMacro", etc.
Krok 5 " Utwórz niestandardowe menu raportów, używając zapytania "UserAccessReport" do zapełnienia pola listy lub pola kombi
Dzięki! Ale czy nie powinno być gdzieś "oficjalnych" informacji od Microsoft? – waanders
O ile sobie przypominam, MS nie chce, żebyś grzebał w tabelach systemowych, może zrobić straszne rzeczy dla twojego DB, jeśli nie wiesz, co robisz. Są nieudokumentowane i ludzie zawsze użyli ostrzeżenia, gdy o nich wspomnieli. Jednak wydaje się, że zatrzymał się. – Fionnuala
Cóż, dla jednego, MS obiecał (zgodnie z Michaelem Kaplanem), że gdy coś w tabeli systemowej zostanie użyte do czegoś, to zawsze będzie obsługiwane. Jak znasz różnicę między używanymi i nieużywanymi obiektami, nie mam pojęcia, ale tak jest. –